Seite 1 von 1

Umwandlung von Fließkommazahlen

Verfasst: Samstag 31. Juli 2010, 12:52
von Timbo
Hallo,

ich habe mir ein Skript geschrieben, welches eine CSV-Datei auswertet. Die enthaltenen Werte möchte ich nun weiterverarbeiten.
Probleme habe ich momentan dabei mit der Umwandlung von Zahlen mittels float(). Die in der CSV-Datei enthaltenen Zahlen sind mit "." als Tausendertrennzeichen sowie "," als Nachkommatrenner versehen (also z.b. "1.200.000,50"), weshalb float() einen ValueError wirft.
Bevor ich mir jetzt eine Helper-Funktion schreibe, die dann die Werte richtig umwandelt, wollte ich nachfragen, ob vielleicht bereits eine Library existiert, die mir dies abnehmen kann?

Gruß
Tim

Re: Umwandlung von Fließkommazahlen

Verfasst: Samstag 31. Juli 2010, 12:59
von snafu
Es gibt zumindest innerhalb einer externen Bibliothek etwas für den Zweck: http://babel.edgewall.org/wiki/Document ... ng-numbers

Vermutlich willst du dir aber lieber den Code abschauen, statt direkt das komplette Paket zu installieren. ;)

Re: Umwandlung von Fließkommazahlen

Verfasst: Samstag 31. Juli 2010, 13:08
von Timbo
snafu hat geschrieben:Es gibt zumindest innerhalb einer externen Bibliothek etwas für den Zweck: http://babel.edgewall.org/wiki/Document ... ng-numbers

Vermutlich willst du dir aber lieber den Code abschauen, statt direkt das komplette Paket zu installieren. ;)
Danke, genau das habe ich gesucht!
Schön ist auch die Möglichkeit Datumswerte zu konvertieren. Das werde ich später noch gebrauchen können.

Re: Umwandlung von Fließkommazahlen

Verfasst: Samstag 31. Juli 2010, 13:12
von Hyperion
Mal so ganz naiv nachgefragt: Das Eingangsformat kannst Du nicht beeinflussen? Wenn ja, wäre das ja der einfachere Weg ;-)

Re: Umwandlung von Fließkommazahlen

Verfasst: Samstag 31. Juli 2010, 13:20
von Timbo
Hyperion hat geschrieben:Mal so ganz naiv nachgefragt: Das Eingangsformat kannst Du nicht beeinflussen? Wenn ja, wäre das ja der einfachere Weg ;-)
Klar, doch leider habe ich keinen Einfluss darauf. Ich bekomme die CSV-Datei so geliefert.

Re: Umwandlung von Fließkommazahlen

Verfasst: Samstag 31. Juli 2010, 21:17
von ms4py
Wenn das Format fix ist, würde es doch auch ganz einfach so gehen:

Code: Alles auswählen

In [1]: val = "1.200.000,50"

In [2]: float(val.replace(".", "").replace(",", "."))
Out[2]: 1200000.5