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
Umwandlung von Fließkommazahlen
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.
Vermutlich willst du dir aber lieber den Code abschauen, statt direkt das komplette Paket zu installieren.
Danke, genau das habe ich gesucht!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.
Schön ist auch die Möglichkeit Datumswerte zu konvertieren. Das werde ich später noch gebrauchen können.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Mal so ganz naiv nachgefragt: Das Eingangsformat kannst Du nicht beeinflussen? Wenn ja, wäre das ja der einfachere Weg
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Klar, doch leider habe ich keinen Einfluss darauf. Ich bekomme die CSV-Datei so geliefert.Hyperion hat geschrieben:Mal so ganz naiv nachgefragt: Das Eingangsformat kannst Du nicht beeinflussen? Wenn ja, wäre das ja der einfachere Weg
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
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/