Beim Konvertieren einer CSV-Datei mit Japanisch in eine JSON-Datei hatte ich Probleme beim Konvertieren des Zeichencodes.
UnicodeDecodeError: 'ascii' codec can't decode byte...
Ich habe es mit dem folgenden Code gelöst, vorausgesetzt, der Zeichencode der zu lesenden CSV-Datei wurde in utf-8n konvertiert.
csvToJson.py
# -*- coding: utf-8 -*-
#Modul
import codecs
import csv
import json
#Öffnen Sie die CSV-Datei
f = open('Geben Sie die zu lesende CSV-Datei an', 'r')
reader = csv.DictReader(f, fieldnames = ("Feldname 1", "Feldname 2", ...,"Feldname N."))
print "CSV loaded."
#In das JSON-Format konvertieren
out = json.dumps( [row for row in reader], sort_keys=False, ensure_ascii=False, encoding='utf_8' )
print "JSON parserd."
#In JSON-Datei speichern
f=codecs.open('Geben Sie die zu exportierende JSON-Datei an','w', 'utf_8')
f.write(out)
print "JSON saved."
Es gibt viele Dinge, die Python-Anfänger nicht verstehen, aber verhindern Sie verstümmelte Zeichen mit der folgenden internen Verarbeitung? Geben Sie beim Lesen einer Datei mit open nicht den Zeichencode an und verwenden Sie csv.DictReader für das Unicode-Objekt Erstellen Sie ein Wörterbuch. Durch Setzen von sure_ascii = False in json.dumps können Sie Unicode-Objekte verarbeiten, und indem Sie utf-8 in der Codierung angeben, können Sie den Inhalt des out-Objekts auf utf-8 setzen und Japanisch ohne verstümmelte Zeichen ausgeben. Schaffst du das?
Recommended Posts