Lire un fichier CSV et dictionnaire python

On va ouvrir le même fichier personnes.csv et effectuer des tâches assez proches de celles de la page précédente mais en utilisant cette fois une structure de dictionnaire Python.

MéthodeLecture du fichier avec un dictionnaire

Python nous autorise aussi à travailler avec un dictionnaire pour chaque ligne. L'avantage de ce choix est que l'on va pouvoir rappeler l'en-tête des colonnes du fichier CSV à l'aide des clefs du dictionnaire.

1
import csv
2
3
# ouverture en lecture du fichier csv
4
with open('personnes.csv', newline='') as fichier:
5
    # on crée un objet DictReader
6
    lecture = csv.DictReader(fichier, delimiter=',')
7
8
    # quelques affichages:
9
    for ligne in lecture:
10
        print(ligne['nom'])

Comme précédemment, l'objet DictReader est un itérateur : on le transformera en liste pour accéder directement par les numéros de ligne :

1
import csv
2
3
# ouverture en lecture du fichier csv
4
with open('personnes.csv', newline='') as fichier:
5
    # on crée un objet DictReader
6
    lecture = csv.DictReader(fichier, delimiter=',')
7
8
    # transfo en liste
9
    lignes = list(lecture)
10
11
for ligne in lignes:
12
    print(ligne)

Fondamental

La ligne 0 d'entête qui pouvait nous gêner avec l'objet reader a maintenant disparu (l'en-tête est utilisée pour les noms des clefs, ce n'est pas considéré comme une donnée).

Exemple

Le début du résultat de la précédente lecture :

1
[('id_personne', '1'), ('nom', 'Labrosse'), ('prenom', 'Adam'), ('anneeNaissance', '2000')]
2
[('id_personne', '2'), ('nom', 'Gemlamorte'), ('prenom', 'Adèle'), ('anneeNaissance', '1985')]
3
[('id_personne', '3'), ('nom', 'Auboisdormant'), ('prenom', 'Abel'), ('anneeNaissance', '2001')]
4
[('id_personne', '4'), ('nom', 'Etpan'), ('prenom', 'Ahmed'), ('anneeNaissance', '1975')]

Si l'on veut afficher par exemple le nom de la personne d'identifiant égal à 3 :

1
import csv
2
3
# ouverture en lecture du fichier csv
4
with open('personnes.csv', newline='') as fichier:
5
    # on crée un objet DictReader
6
    lecture = csv.DictReader(fichier, delimiter=',')
7
8
    # transfo en liste
9
    lignes = list(lecture)
10
11
def nom_d_identifiant(identifiant):
12
    """
13
    identifiant -- entier naturel (identifiant d'une personne)
14
15
    renvoie le nom de la personne ayant identifiant 
16
    pour valeur de id_personne.
17
    """
18
    for personne in lignes:
19
        if int(personne['id_personne'])  == identifiant:
20
            return personne['nom'] 
21
    # on renvoie None si l'identifiant n'existe pas:
22
    return None 
23
24
# test
25
print(nom_d_identifiant(3))

On obtient donc :

Auboisdormant

On peut donc passer aux exercices de la page suivante !