Thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie? (51 answers)
Opened by Gast at 2005-10-26 14:09

Dubu
 2005-10-26 16:14
#59350 #59350
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Die bisherigen Ansätze streichen alle die Segel, wenn eines der gequoteten Felder ein Semikolon enthält. Kann das passieren, duerov?


Da das Format nach CSV-Daten aussieht, wie AndreasM schon bemerkte, empfehle ich ein passendes Modul:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;     # oder Text::CSV_XS, falls vorhanden

my $csv = Text::CSV->new({sep_char => ';'});

my @AlleZeilen;

while (my $zeile = <DATA>) {
   if ($csv->parse($zeile)) {
       push @AlleZeilen, [ $csv->fields() ];
   } else {
       die "kann Zeile nicht parsen: " . $csv->error_input();
   }
}
# Debug-Ausgabe
use Data::Dumper;
print Dumper \@AlleZeilen;

_ _DATA_ _
"Name von Firma1";1234567;"08001234567";"12"
"Name von Firma22";123;"08001234589";""
"Name Firma3";12345;"080012343";"12"
"Name Firma 4; Zusatz";234;"0800102030";""
"Name Firme ""Fünf"" ";987;"0900999999";"42"

(Bitte wie immer die Leerzeichen aus _ _DATA_ _ entfernen.)

Doppelte Anführungszeichen innerhalb eines Feldes, wie sie AndreasM angesprochen hat, werden bei CSV übrigens verdoppelt, womit Text::CSV und Text::CSV_XS auch zurecht kommen.

View full thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie?