Seite 1 von 1

Fliesskommazahl aus string

Verfasst: Samstag 19. August 2017, 16:59
von drnicolas
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.

Re: Fliesskommazahl aus string

Verfasst: Samstag 19. August 2017, 17:13
von Sirius3
@drnicolas: wenn der Text einem bestimmten Muster folgt, muß Du dieses analysieren und die Zahl extrahieren. Reguläre Ausdrücke könnten hilfreich sein.

Re: Fliesskommazahl aus string

Verfasst: Mittwoch 23. August 2017, 06:09
von heiner88
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')

Re: Fliesskommazahl aus string

Verfasst: Mittwoch 23. August 2017, 08:02
von snafu
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.