compu2000
Goto Top

CSV anpassen aufgrund Spaltenformat

Hallo, ich würde mal wieder Euer Schwarmwissen benötigen.

Ich habe eine CSV mit folgenden Inhalt:

Max;Muster;Musterstraße 2;Musterhausen;
Erika;Musterfrau;123 A-F Musterweg;Musterhausen;

Jetzt würde ich gerne im Output anhand der 2. Spalte die Straße und die Hausnummer trennen:

Max;Muster;Musterstraße;2;Musterhausen;
Erika;Musterfrau;Musterweg;123 A-F;Musterhausen;

Ist sowas mit Batch oder Powershell möglich?

Beste Grüße!

Content-ID: 666999

Url: https://administrator.de/forum/csv-anpassen-aufgrund-spaltenformat-666999.html

Ausgedruckt am: 19.02.2025 um 21:02 Uhr

148121
148121 22.05.2021 aktualisiert um 17:33:03 Uhr
Goto Top
tio.run

Frohe Pfingsten
Gruß w.
compu2000
compu2000 22.05.2021 um 21:52:19 Uhr
Goto Top
Vielen lieben Dank zu Pfingsten!

Kannst Du mir vielleicht kurz erklären, was im Code genau passiert?

Beste Grüße!
148121
148121 23.05.2021 aktualisiert um 08:15:30 Uhr
Goto Top
Importiere CSV Datei mit definierten Headern (CSV Datei fehlen die Überschriften)
$csv = ipcsv test.csv -delimiter ';' -header 'Vorname','Nachname','Straße','Ort'
Füge dem CSV Object eine weitere Property (Spalte 'Hausnummer') hinzu
$csv | Add-Member -Membertype Noteproperty -Name 'Hausnummer' -Value ''
Für jede Zeile der CSV führe folgende Schritte innerhalb der geschweiften Klammer (Foreach-Object) durch
$csv | %{
Führe einen Regular Expression Match auf die Straße aus, welcher Hausnummer und Straße in Submatches aufteilt
if ($_.Straße -match '((?<hnr>\d+([a-z]| [a-z]-[a-z]))(?<str>.*))|(?<str>[^\d]+)(?<hnr>.*)'){
Wenn Match erfolgreich setze den Inhalt der Spalten auf die Regex Submatches für Hausnummer und Straße ($matches ist eine Vordefinierte Powershell Variable die immer deie Ergebnisse des letzten durchgeführten Regex Match via -match enthält)
$_.Straße = $matches['str'].trim()
$_.Hausnummer = $matches['hnr'].trim()
}
}
Exportiere das modifizierte CSV Objekt wieder in eine neue CSV Datei
$csv | select Vorname,Nachname,Straße,Hausnummer,Ort | epcsv test_neu.csv -delimiter ';' -NoType -Encoding UTF8