Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9973[/thread]

Umstrukturierung einer csv-Datei

Leser: 1


<< >> 6 Einträge, 1 Seite
teacher
 2007-08-06 00:22
#97587 #97587
User since
2007-08-06
2 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

ich habe nur rudimentäre Grundkenntnisse in Perl und muss nun leider kurzfristig folgende Aufgabe lösen:

Eine csv-Datei folgender Struktur

10;Geschichte;20. Jahrhundert;;;
20;Deutsch;Literatur;Dramatik;;
30;Logik;Philosophie;;;
40;Essays;
50;


muss folgendermaßen umgearbeitet werden.

10;Geschichte
10;20.Jahrhundert
20;Deutsch
20;Literatur
20;Dramatik
etc.



Jedes Feld eines Datensatzes soll also mit der ID in einer eigenen Zeile auftreten.
Wie geht das ?

Danke für Tipps!
renee
 2007-08-06 00:28
#97591 #97591
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn in den Nutzdaten kein Semikolon vorkommen kann:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file.csv';

open my $fh, '<', $file or die $!;
while( my $line = <$fh> ){
    my ($id, @array) = split /;/, $line;
    print $id, ";", $_,"\n" for grep{ defined }@array;
}
close $fh;


Ansonsten mal CPAN:Text::CSV anschauen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
teacher
 2007-08-06 00:37
#97594 #97594
User since
2007-08-06
2 Artikel
BenutzerIn
[default_avatar]
renee+2007-08-05 22:28:35--
Wenn in den Nutzdaten kein Semikolon vorkommen kann:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file.csv';

open my $fh, '<', $file or die $!;
while( my $line = <$fh> ){
    my ($id, @array) = split /;/, $line;
    print $id, ";", $_,"\n" for grep{ defined }@array;
}
close $fh;


Ansonsten mal CPAN:Text::CSV anschauen...


Danke für die schnelle Reaktion!

Wenn ich als Feldtrennzeichen statt des Semikolons einen Doppelpunkt wähle, muss ich im von Dir vorgeschlagenen Code hinter "split" und "print $id" wohl das Semikolon durch den Doppelpunkt ersetzen, stimmts?
Gast Gast
 2007-08-06 02:54
#97600 #97600
teacher+2007-08-05 22:37:15--
Wenn ich als Feldtrennzeichen statt des Semikolons einen Doppelpunkt wähle, muss ich im von Dir vorgeschlagenen Code hinter "split" und "print $id" wohl das Semikolon durch den Doppelpunkt ersetzen, stimmts?


Ja
Gast Gast
 2007-08-06 12:35
#97605 #97605
..und dann sollte der Doppelpunkt nicht in den Nutzerdaten vorkommen..
GoodFella
 2007-08-06 12:36
#97606 #97606
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
(grrr, der login hier hält echt nur eine browsersitzung)
<< >> 6 Einträge, 1 Seite



View all threads created 2007-08-06 00:22.