Thread Problem beim taggen einer Datei via zweiter Datei.
(6 answers)
Opened by efbe at 2008-06-02 22:19
Hallo,
Ich (totaler Perlneuling) habe folgendes Problem: Ich habe 2 Dateien. Eine enthaelt Nomina, Verben und die Anzahl wie haeufig diese miteinander vorkommen. Hier ein Beispiel: Zeit haben 26061 Zeit gehaben 4410 Zeit nehmen 3569 Zeit stehen 3443 Die ganze Datei hat ca. 170MB. Die zweite Datei enthaelt ausschliesslich Verben. Beispiel: abgeben abhalten ablegen ablehnen abnehmen Ich will jetzt die Verben in der ersten Datei mit Klammern[] markieren, die auch in der zweiten Datei vorkommen. Ergebnis dieser Operation waere also zB Zeit [abnehmen] 234 Mein Ansatz war bis jetzt der Folgende: Zuerst die erste Datei in Spalten splitten... das funktioniert auch soweit. Wenn ich dann allerdings nachsehen will ob das Wort in der 2. Datei vorkommt, gibt mir das Programm nichts mehr zurueck. Meine Frage ist jetzt... was habe ich hier falschgemacht? oder ist einfach mein kompletter Ansatz total bescheuert. ... in dem Fall... was waere ein guter Ansatz fuer mein Problem? ...ich sitze hier seit mehreren Tagen an diesem eigentlich ja simplen Problem und bin inzwischen total durch den Wind. Bin also fuer jede Hilfe dankbar! die Dateien habe ich auch mal ins Netz gestellt unter den folgenden Adressen: http://kablooie.org/perl/tag.txt http://kablooie.org/perl/koroesi.txt http://kablooie.org/perl/svc_test_sdl.txt 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 #/usr/bin/perl use strict 'vars'; { my @words; my $file_in; my $file_test; my @columns; my @datafile; my $line; my @koroesi; my %koroesi; my $currentline; $file_in = "svc_test_sdl.txt"; $file_test = "koroesi.txt"; open (INPUT, "$file_in") or die %!; open (TESTFILE, "$file_test") or die %!; @datafile = <INPUT>; close (INPUT); @koroesi = <TESTFILE>; close (TESTFILE); %koroesi = @koroesi; { foreach $line (@datafile){ chomp $line; (@columns) = split (/ /,$line); $currentline = $columns[1]; print "$currentline\n"; if (exists($koroesi{$currentline})) { s/$currentline/\[$currentline\]/; } } } } |