Fliesskommazahl aus string

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
drnicolas
User
Beiträge: 83
Registriert: Sonntag 24. Juli 2016, 10:32

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.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@drnicolas: wenn der Text einem bestimmten Muster folgt, muß Du dieses analysieren und die Zahl extrahieren. Reguläre Ausdrücke könnten hilfreich sein.
heiner88
User
Beiträge: 65
Registriert: Donnerstag 20. Oktober 2016, 07:29

Es werden nur Zahlen mit mindestens einer Nachkommastelle erkannt.
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')
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Antworten