Lorsque j'ai créé un outil pour convertir un fichier CSV en fichier JSON avec Python, le contenu du fichier JSON était déformé, je vais donc laisser la méthode de correction.
Fichier CSV → Source de conversion du fichier JSON (avant modification)
csv_to_json.py
import json
import csv
json_list = []
#Lire le fichier CSV
with open('./csv_sample.csv', 'r') as f:
for row in csv.DictReader(f):
json_list.append(row)
#Écrire dans un fichier JSON
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)
#Chargement du fichier JSON
with open('./json_sample.json', 'r') as f:
json_output = json.load(f)
Fichier CSV
csv_sample.csv
Nom,Classement,Pays d'origine
Nadal,2,Espagne
Federer,3,Suisse
Jokovic,1,Serbie
Exécutez csv_to_json.py
(csv_to_json_tool) bash-3.2$ python csv_to_json.py
Fichier JSON généré après l'exécution
[{"\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"}]
Les personnages ont été déformés. Vérifiez le code de caractère du fichier JSON avec la commande [file --mime].
(csv_to_json_tool) bash-3.2$ file --mime json_sample.json
json_sample.json: application/json; charset=us-ascii
Le code du caractère est us-ascii, et il semble qu'il a été écrit dans un état d'échappement Unicode.
En spécifiant "ensure_ascii = False" dans le troisième argument de json.dump lors de l'écriture d'un fichier JSON, il était possible d'écrire avec utf-8 et d'éviter les échappements.
csv_to_json.py
import json
import csv
json_list = []
#Lire le fichier CSV
with open('./csv_sample.csv', 'r') as f:
for row in csv.DictReader(f):
json_list.append(row)
#Écrire dans un fichier JSON
with codecs.open('./json_sample.json', 'w') as f:
json.dump(json_list, f, ensure_ascii=False) #"ensure_ascii=False"Spécifier
#Chargement du fichier JSON
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
Fichier JSON généré après l'exécution
json_sample.json
[{"Nom": "Nadal", "Classement": "2", "Pays d'origine": "Espagne"}, {"Nom": "Federer", "Classement": "3", "Pays d'origine": "Suisse"}, {"Nom": "Jokovic", "Classement": "1", "Pays d'origine": "Serbie"}]
Il était affiché tel quel!
Recommended Posts