Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python

Aperçu

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.

Ressource

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 pour générer un fichier JSON

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.

Correction des caractères brouillés dans le fichier JSON

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

Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
J'ai écrit le code pour écrire le code Brainf * ck en python
Un mémorandum parce que j'ai trébuché en essayant d'utiliser MeCab avec Python
Je veux afficher la progression en Python!
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
J'ai essayé de représenter graphiquement les packages installés en Python
J'ai essayé de toucher un fichier CSV avec Python
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai senti que j'avais porté le code Python en C ++ 98.
Trébucher lors de la conversion d'une liste bidirectionnelle en JSON dans Go
Je veux utiliser le jeu de données R avec python
Je veux faire quelque chose avec Python à la fin
Tutoriel "Cython" qui rend Python explosif: lorsque le code C ++ dépend de la bibliothèque. Préparation
Code de caractère appris en Python
J'ai essayé de résumer le code souvent utilisé dans Pandas
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
Je veux pouvoir exécuter Python avec VS Code
Tutoriel "Cython" qui rend Python explosif: lorsque le code C ++ dépend de la bibliothèque. Écrivez setup.py.
Dans la commande python, python pointe vers python3.8
J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
Comment ne pas échapper au japonais en traitant avec JSON en Python
[Linux] Je souhaite connaître la date à laquelle l'utilisateur s'est connecté
J'ai eu un AttributeError en me moquant de la méthode ouverte en python
Ligne de mode lorsque vous ouvrez le code Python approprié dans Vim
Je veux exécuter l'interface graphique Python au démarrage de Raspberry Pi
Après avoir appelé le fichier Shell sur Python, convertissez CSV en Parquet.
Spécification du fuseau horaire lors de la conversion d'une chaîne de caractères en type datetime avec python
Articles à lire lorsque le code de script Python de Blender ne fonctionne pas dans 2.80
Que faire lorsque le type de valeur est ambigu en Python?
J'ai eu une erreur lorsque j'ai essayé de traiter luigi en parallèle dans Windows, mais la solution
Exécutez le code de sortie sur le serveur Web local en tant que "A, faisant semblant d'être B" en python
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
Je souhaite générer une sortie lors de la conversion de la valeur du type (par exemple, datetime) qui n'est pas pris en charge lors de la sortie de json avec python
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé d'implémenter PLSA en Python
Entrée / sortie de données en Python (CSV, JSON)
J'ai essayé d'implémenter la permutation en Python
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
Comment masquer l'invite de commande lors de l'exécution de python dans Visual Studio 2015
"Livre pour former des compétences en programmation pour combattre dans le monde" Exemple de solution de code Python --1.1 Chaîne de caractères en double
Je suis tombé sur l'API Hatena Keyword
J'ai essayé d'implémenter PLSA dans Python 2
Je souhaite convertir une table convertie en PDF en Python en CSV
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Tutoriel "Cython" qui rend Python explosif: lorsque le code C ++ dépend de la bibliothèque. Tout d'abord, CMake.
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
J'ai essayé de sauvegarder les données récupérées au format CSV!
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'obtiens une erreur lorsque je mets un plug-in Python dans Visual Studio Code sous l'environnement pyenv