Thread Erste CSV-Zeile als Stringnamen verwenden
(7 answers)
Opened by Steven at 2010-10-12 17:43
Vielen Dank für die schnellen Anworten und Hinweise.
Ich hänge mein Script mal stark gekürzt an, dann lässt sich mein Problem besser erklären: Code (perl): (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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #!/usr/bin/perl use CGI; use strict; use IO::File; my $x=0; my $csv = "internet.csv"; my @csvdaten; my ($status, $artnr, $name, $short_description); my $headdesc = '($status, $artnr, $name, $short_description)'; my $content = $headdesc; # Datei internet.csv öffnen open (IN_CSV, "<$csv") || die "Datei internet.csv nicht lesbar"; # csv-Datei zeilenweise auswerten while (<IN_CSV>){ chop($_); $x++; if ($x=='1') { $_ =~ s/[ .{}]//g; $headdesc =~ s/[ \$\(\)]//g; $headdesc =~ s/,/;/g; open (OUT_STAMM, ">internet_artikelstamm.csv"); print OUT_STAMM $headdesc, "\n"; close (OUT_STAMM); } else { my ($ArtikelNr, $Bezeichnung, $Bezeichnung2) = split(/;/,$_); $artnr = $ArtikelNr; $name = $Bezeichnung; $short_description = $Bezeichnung2; $status = "Aktiviert"; # # # weitere Manipulation der String-Daten } my @stammdaten = ($status, $artnr, $name, $short_description); if (($name !~ /\*\*/)) { my $artikelstamm = join(';',@stammdaten); open (OUT_STAMM, ">>internet_artikelstamm.csv"); print OUT_STAMM $artikelstamm, "\n"; close (OUT_STAMM); } } close IN_CSV; Hintergrund: Ich bekomme eine maschinell erstellte csv-Datei(internet.csv) zur Verfügung gestellt bei der sich die Spaltenreihenfolge und -anzahl ändern kann. Deswegen will ich die Zuordnung der Variablen nicht fest hintelegen. Am Ende der Verarbeitung brauche ich eine csv-Datei deren Format fix ist, die Überschriften haben dann eine andere Bezeichnung und Reihenfolge als die Original-Datei. Die Zuordnung erfolgt im Mittelteil - hier werden auch teilweise die Daten manipuliert. Dafür will ich die Variablen nur einmal fest hinterlegen und daraus sollen dann sowohl die Überschriften als auch die Daten generiert werden. Bsp: 1.Zeile: status;artnr;name;short_description 2.Zeile: $status;$artnr;$name;$short_description 3.Zeile: $status;$artnr;$name;$short_description usw Ich hoffe das war jetzt etwas verständlicher. Vielen Dank für eure Hilfe. Last edited: 2010-10-14 12:34:52 +0200 (CEST) |