Lors de la conversion d'un fichier csv contenant du japonais en fichier json, j'avais du mal à convertir le code de caractère.
UnicodeDecodeError: 'ascii' codec can't decode byte...
Je l'ai résolu avec le code suivant en supposant que le code de caractère du fichier csv à lire a été converti en utf-8n.
csvToJson.py
# -*- coding: utf-8 -*-
#module
import codecs
import csv
import json
#Ouvrez le fichier CSV
f = open('Spécifiez le fichier csv à lire', 'r')
reader = csv.DictReader(f, fieldnames = ("Nom du champ 1", "Nom du champ 2", ...,"Nom du champ N"))
print "CSV loaded."
#Convertir au format JSON
out = json.dumps( [row for row in reader], sort_keys=False, ensure_ascii=False, encoding='utf_8' )
print "JSON parserd."
#Enregistrer dans un fichier JSON
f=codecs.open('Spécifiez le fichier json à exporter','w', 'utf_8')
f.write(out)
print "JSON saved."
Il y a beaucoup de choses que les débutants en python ne comprennent pas, mais évitez-vous les caractères déformés avec le traitement interne suivant? Lors de la lecture d'un fichier avec open, ne spécifiez pas le code de caractère et utilisez csv.DictReader pour l'objet unicode Créez un dictionnaire. En définissant ensure_ascii = False dans json.dumps, vous pouvez gérer les objets Unicode, et en spécifiant utf-8 dans l'encodage, vous pouvez définir le contenu de l'objet out sur utf-8 et afficher le japonais sans caractères déformés. Êtes-vous capable de le faire?
Recommended Posts