Aller au contenu

JSON & CSV#

courant

json — sérialisation#

import json

donnees = {"nom": "Ana", "age": 30, "actif": True}

json.dumps(donnees)                    # '{"nom": "Ana", "age": 30, "actif": true}'
json.dumps(donnees, indent=2)             # formaté, lisible
json.dumps(donnees, ensure_ascii=False)     # conserve les accents tels quels

json.loads('{"a": 1}')                        # {'a': 1}

json — fichiers#

with open("data.json", "w", encoding="utf-8") as f:
    json.dump(donnees, f, indent=2, ensure_ascii=False)

with open("data.json", encoding="utf-8") as f:
    donnees = json.load(f)

Correspondance des types#

Python JSON
dict objet
list, tuple tableau
str chaîne
int, float nombre
True / False true / false
None null

Piège

Les clés d'un dict deviennent toujours des chaînes en JSON ; un tuple utilisé comme clé perd sa structure.

csv — lecture#

import csv

with open("data.csv", newline="", encoding="utf-8") as f:
    lecteur = csv.reader(f, delimiter=",")
    for ligne in lecteur:      # chaque ligne est une list[str]
        print(ligne)

with open("data.csv", newline="", encoding="utf-8") as f:
    lecteur = csv.DictReader(f)   # chaque ligne est un dict (clés = en-têtes)
    for ligne in lecteur:
        print(ligne["nom"])

csv — écriture#

with open("data.csv", "w", newline="", encoding="utf-8") as f:
    ecrivain = csv.writer(f)
    ecrivain.writerow(["nom", "age"])
    ecrivain.writerows([["Ana", 30], ["Bo", 25]])

with open("data.csv", "w", newline="", encoding="utf-8") as f:
    ecrivain = csv.DictWriter(f, fieldnames=["nom", "age"])
    ecrivain.writeheader()
    ecrivain.writerow({"nom": "Ana", "age": 30})

Piège

Toujours ouvrir les fichiers CSV avec newline="" : sinon des lignes vides supplémentaires apparaissent sous Windows.