perl -> Problem beim Parsen einer csv-Datei

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

perl -> Problem beim Parsen einer csv-Datei

Beitrag von mistersixt » 07.12.2004 09:16:05

Moin moin,

ich habe hier eine csv-Datei, die ich umformatieren muss, der Seperator ist ein Komma (,). Nun kann es Zelleninhalte(!) geben, die auch ein Komma beinhalten, diese sind dann aber vorne und hinten durch ein Anführungszeichen (") gekennzeichnet, also zum Beispiel so:

Code: Alles auswählen

2004,,bla,blubb,"variante1, variante2", blubb,,,,
Mit der split-Funktion komme ich da offensichtlich nicht weit, und beispielsweise das Perl-Modul Text-CSV_XS spuckt bei solchen Zeilen einen Fehler aus. Interessanterweise kann OpenOffice diese Datei bestens einlesen, da gibt es neben dem Seperator noch das Feld "Text delimiter", wenn man da die Anführungsstriche angibt, liest er brav das CSV-File ein und bei obigen Beispiel steht dann:

Code: Alles auswählen

variante1, variante2
in entsprechender Zelle, sogar ohne die Anführungsstriche.

Wie mache ich das in Perl?

Danke im voraus,

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 07.12.2004 09:44:55

Oha, habs gerade selber hinbekommen (ich liebe Google), auf dieser Seite gibt es ein csv-Modul:

http://rath.ca/Misc/Perl_CSV/CSV-2.0.html

Bei dem Example unten sieht man leicht, wie man die Datei abändern kann, das csv-File wird korrekt geparst!

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Antworten