Thread Zeichenlimit einrichten (40 answers)
Opened by andy at 2013-05-03 14:53

Gast andy
 2013-05-16 10:52
#167607 #167607
Hallo zusammen,
ich habe nun den Code von FIFO etwas erweitert und das Ganze in drei Schritte unterteilt.

Schritt 1: Längere Wörter die öfter vorkommen werden gekürzt
Schritt 2: Wo jetzt das Ganze schon etwas kürzer ist, kann man es auch auf 30 Stellen kürzen.
Schritt 3: Sofern immernoch Überbleibsel wie bspw. Gmb/Gm von GmbH da sind, soll das ebenfalls abgeschnitten werden

Bis auf Schritt 3 erfüllt das Programm seinen Zweck und ich bin mit dem Ergebnis soweit zufrieden.
Das Ganze sieht bei mir folgendermaßen aus (nicht erschrecken!):

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
#!/usr/bin/perl
use warnings;
use strict;

open A, '<Partnerliste_05_13.csv' or die $!;
open B, '>neu.csv' or die $!;
while (<A>) {

   s/Versicherungsmakler/Vers.-Makler/i;
   s/Versicherungs-/Vers.-/i;
   s/Versicherungs/Vers.-/i;
   s/Versicherungen/Vers./i;
   s/Versicherung/Vers./i;
   s/unabhängiger/unabh./i;
   s/unabhängige/unabh./i;
   s/unabhängig/unabh./i;
   s/Unabhängiger/unabh./i;
   s/Unabhängige/unabh./i;
   s/Unabhängig/unabh./i;
   s/Geschäftsstelle/GSt./i;
   s/(haftungsbeschränkt)//i;
   s/haftungsbeschränkt//i;


   print B;
}
close A;
close B;

#Ende Teil 1

my $infile = 'neu.csv';
open (my $infile_fh, '<', $infile) or die "Kann $infile nicht lesen\n";

my $outfile = 'neu2.csv';
open (my $outfile_fh, '>', $outfile) or die "Kann $outfile nicht schreiben\n";

my @output_cols = (1,2,3,4,5);
while (my $line = <$infile_fh>) {
    chomp $line;
    my @fields = split /;/, $line;
    for my $field (@fields) {
        if (length($field) > 30) {
            $field = substr($field, 0, 30);
                }
    }
    print $outfile_fh join(';', @fields[@output_cols]) . "\n";
}

#Ende Teil 2

open C, '<neu2.csv' or die $!;
open D, '>endprodukt.csv' or die $!;
while (<C>) {
   #GmbH soll bleiben, Gmb/Gm/G soll gelöscht werden
   print D 
}
close C;
close D;

#Ende Teil 3


Nun hat eine Kollegin draufgeschaut und gesagt, dass man es auch eleganter machen könnte, die einzelnen Schritte überflüssig wären und es in einem Abwasch zu machen wäre. Dabei stoße ich aber mal wieder an meine Grenzen, alle Versuche enden erfolglos.
Wie kann man das Ganze so zusammen"wursten", dass es "einfacher" aussieht?

Zudem wäre da noch das Problem mit Schritt 3, da krieg ich ebenfalls nicht auf die Reihe.

Vielen Dank im Voraus!

Gruß
andy

View full thread Zeichenlimit einrichten