Als ich mit Python ein Tool zum Konvertieren einer CSV-Datei in eine JSON-Datei erstellt habe, wurde der Inhalt der JSON-Datei verstümmelt, sodass ich die Korrekturmethode verlassen werde.
CSV-Datei → JSON-Dateikonvertierungsquelle (vor Änderung)
csv_to_json.py
import json
import csv
json_list = []
#CSV-Datei lesen
with open('./csv_sample.csv', 'r') as f:
for row in csv.DictReader(f):
json_list.append(row)
#In JSON-Datei schreiben
with open('./json_sample.json', 'w') as f:
json.dump(json_list, f)
# with codecs.open('./json_sample.json', 'w', 'utf-8') as f:
# json.dump(json_list, f, ensure_ascii=False)
#JSON-Datei wird geladen
with open('./json_sample.json', 'r') as f:
json_output = json.load(f)
CSV-Datei
csv_sample.csv
Name,Rangfolge,Ursprungsland
Nadal,2,Spanien
Federer,3,Schweiz
Jokovic,1,Serbien
Führen Sie csv_to_json.py aus
(csv_to_json_tool) bash-3.2$ python csv_to_json.py
JSON-Datei nach der Ausführung generiert
[{"\u540d\u524d": "\u30ca\u30c0\u30eb", "\u9806\u4f4d": "2", "\u51fa\u8eab\u56fd": "\u30b9\u30da\u30a4\u30f3"}, {"\u540d\u524d": "\u30d5\u30a7\u30c7\u30e9\u30fc", "\u9806\u4f4d": "3", "\u51fa\u8eab\u56fd": "\u30b9\u30a4\u30b9"}, {"\u540d\u524d": "\u30b8\u30e7\u30b3\u30d3\u30c3\u30c1", "\u9806\u4f4d": "1", "\u51fa\u8eab\u56fd": "\u30bb\u30eb\u30d3\u30a2"}]
Die Charaktere wurden verstümmelt. Überprüfen Sie den Zeichencode der JSON-Datei mit dem Befehl [file --mime].
(csv_to_json_tool) bash-3.2$ file --mime json_sample.json
json_sample.json: application/json; charset=us-ascii
Der Zeichencode lautet us-ascii, und es scheint, dass er in einem Unicode-Escape-Zustand geschrieben wurde.
Durch Angabe von "sure_ascii = False" im dritten Argument von json.dump beim Schreiben einer JSON-Datei konnte mit utf-8 geschrieben und ein Escapezeichen vermieden werden.
csv_to_json.py
import json
import csv
json_list = []
#CSV-Datei lesen
with open('./csv_sample.csv', 'r') as f:
for row in csv.DictReader(f):
json_list.append(row)
#In JSON-Datei schreiben
with codecs.open('./json_sample.json', 'w') as f:
json.dump(json_list, f, ensure_ascii=False) #"ensure_ascii=False"Angeben
#JSON-Datei wird geladen
with open('./json_sample.json', 'r') as f:
json_output = json.load(f)
print(json_output)
(csv_to_json_tool) bash-3.2$ file --mime json_sample.json
json_sample.json: application/json; charset=utf-8
JSON-Datei nach der Ausführung generiert
json_sample.json
[{"Name": "Nadal", "Rangfolge": "2", "Ursprungsland": "Spanien"}, {"Name": "Federer", "Rangfolge": "3", "Ursprungsland": "Schweiz"}, {"Name": "Jokovic", "Rangfolge": "1", "Ursprungsland": "Serbien"}]
Es wurde so angezeigt, wie es war!