csv-Datei schreiben

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
BastiL
User
Beiträge: 135
Registriert: Montag 7. Juli 2008, 20:22

Hallo zusammen,

ich möchte eine CSV-Datei schreiben. Der Dialekt lässt sich wie folgt beschreiben:

Code: Alles auswählen

with open('names.csv', 'w', newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=header.keys(),\
             delimiter=';', quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
Einziges Problem das ich habe: Fliesskommazahlen sind kommagetrennt mit zwei Nachkommastellen und ohne Anführungszeichen zu schreiben. Ich muss also aus 1.111 1,11 machen:

Code: Alles auswählen

str(round(1.111,2)).replace('.',',')
Freilich ist '1,11' nach dieser Operation für Python keine Zahl mehr sondern ein String und folgerichtig werden die so bearbeiteten Zahlen ins csv mit Anführungszeichen maskiert geschrieben, und das soll ja nicht so sein. Ich habe leider keine Möglichkeit gefunden wie ich das lösen kann.
Ich habe über pandas "to_csv" nachgedacht, das mehr Optionen anbietet, aber dasselbe Problem hat:
quoting optional constant from csv module. Defaults to csv.QUOTE_MINIMAL. If you have set a float_format then floats are converted to strings and thus csv.QUOTE_NONNUMERIC will treat them as non-numeric.
BastiL
User
Beiträge: 135
Registriert: Montag 7. Juli 2008, 20:22

Ich werde das jetzt durch eine eigene Funktion zur Maskierung ersetzen und dann das Quoting des csv-Expoet abschalten.
Antworten