Zahlen aus String auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jan_schmidt
User
Beiträge: 14
Registriert: Montag 19. April 2010, 16:35

Hallo,

ich habe die folgenden Daten:

Code: Alles auswählen

...
./couched/rererun/e0.100_f0.560
./official/rererun/e0.010_f0.640
./official/rererun/e1.000_f0.590
./automatic/rererun/rererun_e0.50_f0.590
./official/rererun/e0.100_f0.645
...
Aus diesen Strings würde ich gerne pro Linie immer die Zahl hinter dem e und die Zahl hinter dem f auslesen. Die Zahlen haben teilweise 2 oder 3 Nachkommastellen und bei einigen Daten (hier nicht gezeigt) ist das Ende der Zeile nicht identisch mit dem Ende der Zahl f.

Hat jemand eine Idee wie man das hübsch anstellen kann?


Danke! :)
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code: Alles auswählen

>>> import re
>>> foo = '''./couched/rererun/e0.100_f0.560
... ./official/rererun/e0.010_f0.640
... ./official/rererun/e1.000_f0.590
... ./automatic/rererun/rererun_e0.50_f0.590
... ./official/rererun/e0.100_f0.645'''
>>> [map(float, re.search(r'e(\d+\.\d+)_f(\d+.\d+)', line.split('/')[-1]).groups()) for line in foo.splitlines()]
[[0.1, 0.56], [0.01, 0.64], [1.0, 0.59], [0.5, 0.59], [0.1, 0.645]]
Man könnte es natürlich auch leserlich machen. Und bestimmt auch insgesamt eleganter :P
Antworten