Python csv-writer-Falsches Trennzeichen?
Disclaimer: ich bin in Europa.
Laut auf dieser Seite verwendet Excel das Semikolon ;
als Standard-Trennzeichen in Europa, um "Konflikte zu vermeiden" mit dem dezimal-Komma.
Nun, ich habe dieses Python-code:
import csv
data = [["test", "data"], ["foo", "bar"]]
writer = csv.writer(open("data.csv", "wb"), dialect="excel")
writer.writerows(data)
Sollte diese Datei erzeugen:
test;data
foo;bar
sondern Kommata verwendet werden. Warum ist das passiert? locale.getdefaultlocale()
zurück ('nl_NL', 'cp1252')
.
Ich verstehe nicht, die downvote. Es ist ein Relevantes problem, es zeigt die Forschung, Anstrengung, und die Lösung ist nicht so offensichtlich sind.
Verschiedene nicht Verwandte Fragen: Haben Sie gelesen, die 4. Lösung in "dieser Seite", die du zitiert hast? Wer sind die vorgesehenen Verbraucher von dieser SSV-Datei -- Menschen oder Computer? Was werden Sie tun? Haben Sie darüber nachgedacht, das schreiben einer XLS-oder XLSX-Datei (die gemacht werden können, Gebietsschema-Agnostiker, mit Pflege)?
Verschiedene nicht Verwandte Fragen: Haben Sie gelesen, die 4. Lösung in "dieser Seite", die du zitiert hast? Wer sind die vorgesehenen Verbraucher von dieser SSV-Datei -- Menschen oder Computer? Was werden Sie tun? Haben Sie darüber nachgedacht, das schreiben einer XLS-oder XLSX-Datei (die gemacht werden können, Gebietsschema-Agnostiker, mit Pflege)?
InformationsquelleAutor orlp | 2011-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil der csv-Datei.excel-Dialekt ist nicht lokalisierbaren. Wenn Sie möchten, explizit verwenden Sie Semikolons als Trennzeichen, dann müssen Sie entweder explizit übergeben Sie die Trennzeichen in csv.öffnen Sie als
oder erstellen Sie einen neuen Dialekt, und registrieren Sie es
In jedem Fall sollten Sie testen, wie floating-point-zahlen geschrieben werden ... ich vermute, Sie werden nicht geschrieben in der europäischen format Sie wünschen (mit einem Komma als radix)
InformationsquelleAutor donkopotamus
Den
excel
Dialekt angegeben ist, durch folgende Attribute (inLib/csv.py
, Zeile 57):Sehe ich keinen Hinweis, dass dieses irgendwie locale-abhängig, daher erhalten Sie immer
,
mit der Standard-Dialekt.Aber das ist leicht behoben, z.B.
Nach Ihrem zweiten Anweisung
csv.excel.delimiter
bezieht sich auf';'
statt','
. Lesen Sie die Antwort von @Donkopotamus.Danke, korrigiert.
InformationsquelleAutor miku