Lire un fichier CSV et liste de listes Python

Nous allons utiliser ce fichier CSV suivant :

Fichier CSV utilisé

Vous pouvez ouvrir le fichier personnes.csv avec un éditeur de texte ou un tableur pour visualiser son contenu.

Le séparateur de données est la virgule.

Le contenu est le suivant :

id_personne

nom

prenom

anneeNaissance

1

Labrosse

Adam

2000

2

Gemlamorte

Adèle

1985

3

Auboisdormant

Abel

2001

4

Etpan

Ahmed

1975

5

Térieur

Alain

1999

6

Térieur

Alex

1976

7

Proviste

Alain

2000

8

Verse

Alain

1970

9

Ception

Alex

2001

10

Ainé

Ali

1975

11

Gator

Ali

2001

12

Bistraux

Alonzo

2001

13

Patamob

Alphonse

1970

14

Ficulté

Andy

1980

15

Rectdustade

Andy

2000

16

Verserre

Annie

2001

17

Boréal

Aurore

1985

18

Nor

Paul

1985

19

Dejeu

Bernadette

2001

20

Dajeun

Bruno

1984

21

Hiple

Candice

2000

MéthodeLecture avec l'objet reader

Il s'agit de la méthode standard de lecture d'un fichier CSV. On suppose aussi que les 2 fichiers sont dans le même dossier.

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 reader
6
    lecture = csv.reader(fichier, delimiter=',')
7
8
    # lecture et affichage des lignes:
9
    for ligne in lecture:
10
        print(ligne)
11

Remarque

  • Chaque ligne est une liste.

  • Vous remarquerez que les éléments des listes-lignes sont des chaînes de caractère. Si l'on veut par exemple que l'année de naissance soit un entier, il faudra utiliser int.

1
>>> annee = '2005'
2
>>> type(annee)
3
<class 'str'>
4
>>> annee = int(annee)
5
>>> annee
6
2005
7
>>> type(annee)
8
<class 'int'>
9

Attention

L'objet reader n'est pas une liste ou un tuple: il permet d'itérer sur les lignes du fichier. C'est un itérateur ou iterable en anglais, relisez le cours de 1ère, il se comporte comme l'objet range( ) , cf la remarque sur ce cours.

Par exemple, on ne peut pas appeler lecture[2] pour obtenir la ligne 3 du fichier, cela provoquerait une erreur : tout ce que l'on peut faire a priori est un parcours de lecture élément par élément (c'est à dire un parcours du fichier ligne par ligne).

MéthodeLecture en manipulant une liste de listes

On peut toutefois transformer l'objet reader en liste :

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 reader
6
    lecture = csv.reader(fichier, delimiter=',')
7
8
    # on transforme l'itérateur en liste:
9
    lignes = list(lecture)
10
11
print(f"La ligne 0 du fichier: {lignes[0]}.")
12
print(f"La ligne 1 du fichier: {lignes[1]}.")
13
print(f"Le nombre de lignes du fichier: {len(lignes)}.")

Rappel

Avec une version de python >3.6, rappelons que les lignes d'appel à print seront plutôt :

1
print("La ligne 0 du fichier: {}.".format(lignes[0]))
2
print("La ligne 1 du fichier: {}.".format(lignes[1]))
3
print("Le nombre de lignes du fichier: {}.".format(len(lignes))) 

ou encore plus basiquement :

1
print("La ligne 0 du fichier: ", lignes[0])
2
print("La ligne 1 du fichier: ", lignes[1])
3
print("Le nombre de lignes du fichier: ", len(lignes))

Simulation

On obtient donc :

1
La ligne 0 du fichier: ['id_personne', 'nom', 'prenom', 'anneeNaissance'].
2
La ligne 1 du fichier: ['1', 'Labrosse', 'Adam', '2000'].
3
Le nombre de lignes du fichier: 22.

On remarquera que notre objet lignes est maintenant une liste de listes.

On peut donc passer aux exercices de la page suivante !