Python DictWriter, der UTF-8-codierte CSV-Dateien schreibt
- Ich habe eine Liste der Wörterbücher, die mit unicode-strings.
csv.DictWriter
können, schreiben Sie eine Liste der Wörterbücher, die in einer CSV-Datei.- Ich möchte die CSV-Datei in UTF8 kodiert sein.
- Die
csv
Modul nicht in den Griff Konvertierung von unicode-Zeichenketten in UTF8. - Den
csv
Modul-Dokumentation ist ein Beispiel für die Konvertierung alles auf UTF8:def utf_8_encoder(unicode_csv_data): for line in unicode_csv_data: yield line.encode('utf-8')
- Es hat auch eine
UnicodeWriter
Klasse.
Aber... wie mache ich DictWriter
Arbeit mit diesen? Würden Sie nicht haben, um zu injizieren sich in der Mitte der es, zu fangen, den der geordneten Wörterbücher und Kodieren Sie Sie, bevor Sie es schreibt diese in die Datei? Ich verstehe es nicht.
InformationsquelleAutor der Frage endolith | 2011-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die mit Python 2.7 oder höher, verwenden Sie eine dict-comprehension neu das Wörterbuch auf utf-8, bevor Sie zum DictWriter:
Können Sie diese Idee zu aktualisieren UnicodeWriter zu DictUnicodeWriter:
InformationsquelleAutor der Antwort Mark Tolonen
Gibt es eine einfache Lösung mit der wunderbaren UnicodeCSV Modul. Nachdem Sie es, ändern Sie einfach die Zeile
zu
Und es beginnt automatisch zu spielen schön mit UTF-8.
Hinweis: Wechsel zu Python 3 wird auch befreien Sie von diesem problem (Dank jamescampbell für den Tipp). Und es ist etwas, das sollte man sowieso tun.
InformationsquelleAutor der Antwort rlafuente
Können Sie konvertieren Sie die Werte auf UTF-8-on-the-fly, wie Sie passieren die dict zu
DictWriter.writerow()
. Zum Beispiel:Ausgabe foo.csv -:
InformationsquelleAutor der Antwort samplebias
Können Sie eine proxy-Klasse zum Kodieren dict-Werte erforderlich sind, wie diese:
InformationsquelleAutor der Antwort Daniel Kluev
Beim Aufruf
csv.writer
mit Ihrem Inhalt, die Idee ist die übergabe der Inhalte durchutf_8_encoder
als würde es Sie geben, die das (utf-8) codierten Inhalt.InformationsquelleAutor der Antwort Senthil Kumaran
Meine Lösung ist ein bisschen anders. Während alle oben genannten Lösungen konzentrieren sich auf unicode-kompatibel dict, meine Lösungen macht DictWriter kompatibel mit unicode. Dieser Ansatz wird auch vorgeschlagen, in python docs (Eins).
Klassen UTF8Recoder, UnicodeReader, UnicodeWriter stammen aus python docs. UnicodeWriter->writerow wurde geändert, ein bisschen zu.
Verwenden Sie es als regelmäßige DictWriter/DictReader.
Hier ist der code:
InformationsquelleAutor der Antwort b1r3k