Travailler avec les fichiers JSON et CSV en Python

Introduction

Les formats JSON et CSV sont deux des formats de données les plus utilisés pour le stockage et l'échange d'informations. Que vous importiez des données depuis une API ou que vous travailliez avec des tables de données, le module Python permet de gérer facilement les fichiers JSON et CSV. Avec Python, vous pouvez non seulement lire et écrire ces formats, mais aussi convertir entre eux pour simplifier le traitement des données.

Dans cet article, nous allons explorer comment lire, écrire, et manipuler les fichiers JSON et CSV en Python.


1. Travailler avec les fichiers JSON en Python

Le format JSON (JavaScript Object Notation) est couramment utilisé pour échanger des données entre un serveur et une application. Le module json en Python facilite la manipulation de ces fichiers.

1.1. Importer le module json

import json

1.2. Lire un fichier JSON

Pour lire un fichier JSON, utilisez la fonction json.load(), qui transforme le contenu JSON en dictionnaire Python.

with open("data.json", "r") as fichier:
    donnees = json.load(fichier)
print(donnees)

1.3. Écrire dans un fichier JSON

La fonction json.dump() vous permet d'écrire un dictionnaire Python dans un fichier JSON. Utilisez l'argument indent pour rendre le fichier JSON plus lisible.

donnees = {
    "nom": "Alice",
    "âge": 25,
    "ville": "Paris"
}

with open("data.json", "w") as fichier:
    json.dump(donnees, fichier, indent=4)

1.4. Convertir une chaîne JSON en dictionnaire

Pour transformer une chaîne JSON en dictionnaire Python, utilisez json.loads().

chaine_json = '{"nom": "Alice", "âge": 25}'
donnees = json.loads(chaine_json)
print(donnees)

1.5. Convertir un dictionnaire en chaîne JSON

Utilisez json.dumps() pour convertir un dictionnaire Python en une chaîne JSON.

donnees = {"nom": "Alice", "âge": 25}
chaine_json = json.dumps(donnees, indent=4)
print(chaine_json)

2. Travailler avec les fichiers CSV en Python

Le format CSV (Comma-Separated Values) est utilisé pour stocker des données tabulaires (colonnes et lignes) dans un format texte. Le module csv en Python permet de lire et d’écrire ces fichiers facilement.

2.1. Importer le module csv

import csv

2.2. Lire un fichier CSV ligne par ligne
La fonction csv.reader() permet de lire un fichier CSV ligne par ligne et de stocker chaque ligne dans une liste.

2.3. Lire un fichier CSV avec en-têtes

Si le fichier CSV contient des en-têtes, vous pouvez utiliser csv.DictReader() pour les lire sous forme de dictionnaires, où chaque en-tête devient une clé.

with open("data.csv", "r") as fichier:
    lecteur_csv = csv.DictReader(fichier)
    for ligne in lecteur_csv:
        print(ligne)

2.4. Écrire dans un fichier CSV

Pour écrire des données dans un fichier CSV, utilisez csv.writer() et la méthode writerow() pour chaque ligne.

donnees = [
    ["Nom", "Âge", "Ville"],
    ["Alice", 25, "Paris"],
    ["Bob", 30, "Lyon"]
]

with open("data.csv", "w", newline="") as fichier:
    ecrivain_csv = csv.writer(fichier)
    ecrivain_csv.writerows(donnees)

2.5. Écrire dans un fichier CSV avec en-têtes

Si vous souhaitez écrire des données avec des en-têtes, utilisez csv.DictWriter() et précisez les noms de colonnes avec fieldnames.

donnees = [
    {"Nom": "Alice", "Âge": 25, "Ville": "Paris"},
    {"Nom": "Bob", "Âge": 30, "Ville": "Lyon"}
]

with open("data.csv", "w", newline="") as fichier:
    fieldnames = ["Nom", "Âge", "Ville"]
    ecrivain_csv = csv.DictWriter(fichier, fieldnames=fieldnames)
    ecrivain_csv.writeheader()  # Écrire les en-têtes
    ecrivain_csv.writerows(donnees)

3. Convertir entre JSON et CSV

Python facilite la conversion de JSON à CSV et vice versa, en utilisant des boucles et les fonctions de json et csv.

3.1. Convertir un fichier JSON en CSV

Imaginons un fichier JSON contenant une liste de dictionnaires, chacun représentant une ligne de données.

[
    {"Nom": "Alice", "Âge": 25, "Ville": "Paris"},
    {"Nom": "Bob", "Âge": 30, "Ville": "Lyon"}
]

Pour convertir cela en fichier CSV :

import json
import csv

# Charger le fichier JSON
with open("data.json", "r") as fichier_json:
    donnees = json.load(fichier_json)

# Écrire dans le fichier CSV
with open("data.csv", "w", newline="") as fichier_csv:
    fieldnames = donnees[0].keys()  # Utiliser les clés du premier dictionnaire comme en-têtes
    ecrivain_csv = csv.DictWriter(fichier_csv, fieldnames=fieldnames)
    ecrivain_csv.writeheader()
    ecrivain_csv.writerows(donnees)

3.2. Convertir un fichier CSV en JSON

Pour convertir un fichier CSV en JSON :

import csv
import json

# Charger le fichier CSV
donnees = []
with open("data.csv", "r") as fichier_csv:
    lecteur_csv = csv.DictReader(fichier_csv)
    for ligne in lecteur_csv:
        donnees.append(ligne)

# Écrire dans le fichier JSON
with open("data.json", "w") as fichier_json:
    json.dump(donnees, fichier_json, indent=4)

4. Conseils pour manipuler les fichiers JSON et CSV

  1. Vérifiez la validité des fichiers : Assurez-vous que le format JSON est valide et que le fichier CSV utilise le bon séparateur.
  2. Utilisez des encodages compatibles : Spécifiez l'encodage, comme encoding="utf-8", pour éviter les problèmes de compatibilité, surtout avec des caractères spéciaux.
  3. Gérez les exceptions : Utilisez des blocs try-except pour gérer les erreurs de lecture/écriture de fichiers.
  4. Contrôlez la lisibilité des fichiers JSON : Utilisez l'argument indent dans json.dump() pour des JSON bien formatés.

Conclusion

Manipuler des fichiers JSON et CSV en Python est essentiel pour traiter les données et échanger des informations entre applications. Grâce aux modules json et csv, Python simplifie considérablement la lecture, l'écriture, et la conversion de données dans ces formats courants. En maîtrisant ces outils, vous pouvez rendre votre code plus flexible et mieux adapté aux besoins des applications modernes de traitement des données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *