Thread Probleme mit Ausdrücken (21 answers)
Opened by Trommelwirbel at 2011-11-10 17:05

Trommelwirbel
 2011-11-14 14:32
#154187 #154187
User since
2011-11-10
28 Artikel
BenutzerIn
[default_avatar]
ok, hier ist mal ein ausschnitt aus der datei - die insgesamt etwas über 8500 zeilen hat.


Das Markierte ist ein $element. Die Elemente sind einfach eine Standortbezeichnung, die als Zahl gegeben sind. Diese Zahlen sind dann auch der gesuchte Ausdruck. Für jedes Element, besteht in dieser Liste genau einmal das gewüschte Profil. Das Element und dann ein Leerzeichen, dies ist immer nur in der Elementenzeile der Fall. In den anderen Zeilen, kann z.B. die 18 nur in Kombination mit einem "." oder Zeilemumbruch stehen. Problem ist, dass im Moment die 518 zum Beispiel auch ausgegeben wird. Soll es aber nicht.

18 5
2 1.35
5 3.25
10 5.4
25 9.63
50 14.3
19 5
2 1.53
5 3.65
10 6.04
25 10.71
50 15.84
21 5
2 1.72
5 4.1
10 6.82
25 12.28
50 18.4
29 5
2 0.7
5 1.87
10 3.4
25 6.89
50 11.3
33 5
2 0.91
5 2.39
10 4.31
25 8.66
50 14.12
37 5
2 1.3
5 3.26
10 5.69
25 11.01
50 17.47
41 5
2 1.78
5 4.33
10 7.37
25 13.7
50 21.07
46 5
2 2.24
5 5.3
10 8.89
25 16.26
50 24.73


Das ist im Moment der Code, der eine Elemente Liste erstellt und dann für jedes $element die Datei durchgehen soll. Das funktioniert auch soweit, nur leider Erkennt er auch andere in dem Ausdruck, wie gesagt, die Zeilen von 518 gibt er auch aus zum Beispiel.

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
use strict;
use warnings;

my (@elemente) = (); # Erzeugen einer leeren Liste
my $element;

my $y=0;


open (IN_elements , "<elemente.txt"); # öffnet Txt - Datei in denen alle Elemente stehen
        
while(<IN_elements>){ # Schleife weist jedem Element einen Listenplatz zu
                chomp;
                $element = substr($_,0,4);
                
                $elemente[$q] = $element;
                $q += 1;
                
                                     
                                        }
                                        


foreach $element(@elemente){

open (Out,">>$element.txt");
open (IN , "<hq_regio_neu.txt");
                                                                        
my $num = 0;
                                        
while ( my $line = <IN> ) {
                                        
if ( $num == 0 && $line =~ m/$element (\d+)/ ) {
$num = $1;}
                                                
elsif ( $num > 0 ) {
print Out $line;
$num--;
                }
                }
                }

Last edited: 2011-11-14 14:57:08 +0100 (CET)

View full thread Probleme mit Ausdrücken