Ein externes Programm liefert eine Meldung in Textform, in den ein Fliesskomma-Wert in Klammern integriert ist.
Diesen Fliesskommawert möchte ich speichern und weitre verarbeiten.
Ich finde leider nur Hinweise wie man einen String untersucht und festellt ob es eine Fliesskommazahl ist. Das wird bei mir aber nie der Fall sein, da immer normaler Text mit dabei ist.
Fliesskommazahl aus string
Es werden nur Zahlen mit mindestens einer Nachkommastelle erkannt.
Für andere Zahlen wie 123 muss das Pattern noch geändert werden.
Für andere Zahlen wie 123 muss das Pattern noch geändert werden.
Code: Alles auswählen
#!/usr/bin/python3
import re
text = 'hier kommt eine Zahl. 1234.45Euro. Das ist teuer.'
pattern = r'([-+]?\d+\.\d+)'
match = re.search(pattern, text)
if match:
print(match.group(1))
else:
print('nichts gefunden')
Liefer mal ein Muster, wenn du wirklich zielführende Hilfe benötigst. Es geht ja auch darum ob du nur die Klammern mit der Zahl erhälst oder ob weiterer Text dabei ist.
Als allgemeiner Ansatz ist das vom Vorposter gezeigte Pattern [-+]?\d+\.\d+ für Fließkommazahlen schon ganz gut. Es deckt aber einige möglicherweise auftretende Fälle noch nicht ab. Auch daher der Hinweis mit dem Muster, um sicherzugehen ob diese Fälle überhaupt bei dir vorkommen.
@heiner88:
Die Klammerung um den regulären Ausdruck ist übrigens unnötig. Man kann die Klammern weglassen und dann match.group() schreiben.
Als allgemeiner Ansatz ist das vom Vorposter gezeigte Pattern [-+]?\d+\.\d+ für Fließkommazahlen schon ganz gut. Es deckt aber einige möglicherweise auftretende Fälle noch nicht ab. Auch daher der Hinweis mit dem Muster, um sicherzugehen ob diese Fälle überhaupt bei dir vorkommen.
@heiner88:
Die Klammerung um den regulären Ausdruck ist übrigens unnötig. Man kann die Klammern weglassen und dann match.group() schreiben.