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

Zahl aus Zeichenkette extrahieren



<< >> 7 Einträge, 1 Seite
Gast Gast
 2006-04-13 20:02
#64937 #64937
Hallo,
ich hab folgende Frage:

Habe in einer Datei verschiedene Werte vorliegen z.B.
A0 = 10.345190
BO = 856.485177
BOP = 4.241238
C = -0.644826

Habs jetzt hinbekommen das ich die Zeile mit dem A0 herausfische, möchte jetzt aber den Zahlenwert daraus extrahieren.
Wie mach ich das mit Perl?
Hab heute erst angefangen mich richtig mit Perl zu befassen im Zuge meiner Bachelorarbeit, und habs noch nicht so ganz raus mit den regulären Ausdrücken.
Kann mir jemand helfen?
Matze
 2006-04-13 20:12
#64938 #64938
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also, erstmal würde ich mir die Wiki:Buchempfehlungen ansehen.(Geht mit Buch einfach besser)

Und sonst, würde ich es so machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/perl -w
#
use strict;

my %pairs;

open IN, "datei.dat";
 while (my$line = <IN>) {
   chomp $line;
   next if $line =~ /^\s*$/;

   my($key,$val) = split /\s*=\s*/,$line;
   $pairs{$key} = $val;
 }
close IN;

print "A0: $pairs{A0}\n";


Habs nicht getestet!
Aber es müsste so funktionieren.(Pfad musste noch anpassen)

MfG. Matze

/EDIT: my $line => my$line\n\n

<!--EDIT|Matze|1144944802-->
Mit freundlichen Grüßen: Matze
Matze
 2006-04-13 20:15
#64939 #64939
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Upps!
Hab ich ganz übersehen, der Titel, sry!

Zahl aus einer Zeichenkette kriegste so:
Code: (dl )
1
2
$zeichenkette =~ /.*(\d+).*/;
$zahl = $1;


Edit:
Mit Komma, so:
Code: (dl )
1
2
$zeichenkette =~ /.*([\d\.]+).*/;
$zahl = $1;


MfG. Matze\n\n

<!--EDIT|Matze|1144945020-->
Mit freundlichen Grüßen: Matze
esskar
 2006-04-13 20:19
#64940 #64940
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
oder
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
while(<DATA>) {
m{=\s+(-?\d+)\.(\d+)};
print "$1.$2\n";
}
exit;

__DATA__
A0 = 10.345190
BO = 856.485177
BOP = 4.241238
C = -0.644826
Matze
 2006-04-13 20:27
#64941 #64941
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ok, das - hatte ich auch noch vergessen...

MfG. Matze
Mit freundlichen Grüßen: Matze
tobiasreike
 2006-04-14 11:38
#64942 #64942
User since
2006-04-14
2 Artikel
BenutzerIn
[default_avatar]
Super danke schonmal.

Hab jetzt nur das Problem, das da ja steht

A0 = 10.2392381 oder so

das nach dem A ist auch eine null, also extrahiert er mir die und danach ist Ende. Wie mach ich ihm klar das er nur die Zahl nach dem = Zeichen extrahiert?

Hab mir auch schon Bücher besorgt (die zwei von O'Reillys), kriegs nur noch irgendwie nicht hin.

MfG
Tobi
tobiasreike
 2006-04-14 11:43
#64943 #64943
User since
2006-04-14
2 Artikel
BenutzerIn
[default_avatar]
Ach sorry, hab gerade die Lösung von esskar ausprobiert und bischen bei mir umgeschrieben und jetzt läufts.
Super vielen Dank!

Ciao!
<< >> 7 Einträge, 1 Seite



View all threads created 2006-04-13 20:02.