Ecrire un dictionnaire en CSV en Python

Rayven Esplanada 21 février 2021
Ecrire un dictionnaire en CSV en Python

Ce tutoriel présente la manière d’écrire une variable de dictionnaire dans un fichier csv en Python.

Utiliser le module csv pour écrire un dictionnaire dans un fichier CSV en Python

Le module Python csv contient des outils et des fonctions pour manipuler les fichiers csv. Il existe deux méthodes faciles à utiliser pour écrire des dictionnaires dans un fichier csv : writer() et DictWriter().

Ces deux méthodes ont des fonctions similaires ; la seule différence est que DictWriter() est une classe wrapper qui contient plus de fonctions.

Prenons un premier exemple avec un seul dictionnaire contenant quelques paires clé-valeur :

dct = {"Name": "John", "Age": "23", "Country": "USA"}

Dans le premier exemple, nous utilisons writer() pour accéder à un nouveau fichier csv et y insérer le dictionnaire.

import csv

dct = {"Name": "John", "Age": "23", "Country": "USA"}

with open("dct.csv", "w") as f:
    writer = csv.writer(f)
    for k, v in dct.items():
        writer.writerow([k, v])

Comme le type d’accès au fichier est w, le contenu du fichier csv dct.csv sera remplacé par les nouvelles modifications. Si le fichier n’existe pas, il sera automatiquement créé dans le même répertoire.

Le contenu du fichier csv sera affiché :

Fichier CSV

Comme il n’y a qu’une seule entrée de dictionnaire, la présentation du fichier csv contient toutes les clés dans la première colonne, et les valeurs sont dans la deuxième colonne.

Exemple d’utilisation d’un tableau de dictionnaires

C’était un exemple de dictionnaire unique. Que faire si vous souhaitez insérer plusieurs dictionnaires dans un seul fichier csv ?

Pour cet exemple, la fonction DictWriter() sera utilisée pour écrire dans un fichier csv. La présentation CSV du premier exemple devra également être modifiée car il y a plusieurs valeurs avec les mêmes clés.

La première ligne devrait contenir les étiquettes des clés, et les lignes suivantes contiendraient les valeurs de chaque entrée du dictionnaire.

Déclarez d’abord un tableau de dictionnaires avec les mêmes valeurs de clés.

dct_arr = [
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

Ensuite, écrivez ce tableau de dictionnaires dans un fichier csv en utilisant le module csv et DictWriter().

import csv

labels = ["Name", "Age", "Country"]
dct_arr = [
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

try:
    with open("csv_dct.csv", "w") as f:
        writer = csv.DictWriter(f, fieldnames=labels)
        writer.writeheader()
        for elem in dct_arr:
            writer.writerow(elem)
except IOError:
    print("I/O error")

Le paramètre fieldnames dans DictWriter() se voit attribuer la variable labels, qui est un tableau des étiquettes de clés du tableau de dictionnaires.

Il est également bon de s’entraîner à envelopper le code qui manipule les fichiers avec la gestion des exceptions (try ... except). Ceci au cas où il y aurait des erreurs externes ou des incompatibilités concernant le processus d’écriture du fichier.

Production :

Tableau de fichiers CSV

En résumé, le module csv contient toutes les fonctions et outils nécessaires pour écrire un dictionnaire dans un fichier csv. Les fonctions writer() et DictWriter() peuvent toutes deux être facilement utilisées pour y parvenir.

Il est également bon de noter qu’il faut envelopper les blocs qui manipulent les fichiers avec une gestion des exceptions pour s’assurer que les erreurs d’E/S sont capturées avant qu’elles ne cassent quelque chose.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Article connexe - Python CSV

Article connexe - Python Dictionary