Lire CSV ligne par ligne en Python

Shikha Chaudhary 30 janvier 2023
  1. Structure de fichier d’un fichier CSV
  2. Lire le fichier CSV ligne par ligne en utilisant csv.reader en Python
  3. Lire le fichier CSV ligne par ligne à l’aide de l’objet DictReader en Python
  4. Conclusion
Lire CSV ligne par ligne en Python

En Python, lire un fichier et l’imprimer par colonne est courant. Mais lire le fichier ligne par ligne peut parfois être un peu déroutant.

Cet article abordera comment lire un fichier CSV ligne par ligne en Python. Nous utiliserons le module csv de python pour traiter les fichiers CSV en Python.

Avant de lire le fichier CSV ligne par ligne, regardons d’abord le format de fichier des fichiers CSV. Cela nous aidera à mieux manipuler les fichiers CSV.

Structure de fichier d’un fichier CSV

CSV signifie Comma Separated Values ; c’est un format de fichier simple qui stocke les données dans des tables. Ces tableaux peuvent se présenter sous la forme d’un tableur ou d’une base de données.

On peut aussi faire un fichier CSV dans un simple éditeur de texte comme Notepad. Chaque ligne du fichier CSV correspond à un enregistrement du tableau.

De plus, chaque enregistrement possède un ou plusieurs champs. La coupe d’un champ et d’un enregistrement est appelée une cellule. Ces champs sont séparés par des virgules (,).

Parfois, on appelle aussi cette virgule un délimiteur. Notez que ce format tire son nom de l’utilisation de la virgule comme séparateur de champs. Les fichiers CSV sont largement utilisés en raison de leur compatibilité avec de nombreux programmes, bases de données, feuilles de calcul et logiciels de traitement de texte.

Créons maintenant un fichier CSV en utilisant la structure de fichier décrite ci-dessus. Après avoir créé le fichier, nous lirons le fichier CSV ligne par ligne en utilisant différentes fonctions.

Nous pouvons créer un fichier CSV à l’aide d’une feuille de calcul dans Microsoft Excel. Cependant, si Microsoft Excel n’est pas installé sur votre système, vous pouvez utiliser le Bloc-notes ou d’autres éditeurs de texte pour créer un fichier CSV.

Nous pouvons changer l’extension de fichier en .csv pour ce faire. Aussi, n’oubliez pas de suivre le format d’un fichier CSV. Voici toutes les étapes que nous devons effectuer.

  • Ouvrez un éditeur de texte et écrivez le contenu dans le bon format CSV. Les en-têtes, ainsi que les enregistrements, sont séparés par des virgules. Chaque enregistrement commence sur une nouvelle ligne. Ceci est illustré ci-dessous :

    Roll Number,Name,Subject
    1,Harry Potter,Magical Creatures
    2,Ron Weasley,Divination
    3,Hermione Granger,Dark arts
    

Enregistrez ce fichier sous Demo.csv. Le fichier CSV sera créé avec succès.

Nous pouvons utiliser la fonction open() pour ouvrir le fichier CSV en Python. Cependant, nous préférons utiliser le module python csv conçu uniquement à cet effet. Pour utiliser le module csv, nous devons d’abord l’importer.

import csv

Nous utiliserons le fichier Demo.csv que nous avons déjà créé pour démontrer. Le fichier se présente comme suit :

Roll Number,Name,Subject
1,Harry Potter,Magical Creatures
2,Ron Weasely,Divination
3,Hermione Granger,Dark arts

Pour lire le contenu de ce CSV ligne par ligne en Python, nous allons utiliser le module csv, qui fournit en outre deux classes. Ces classes sont csv.reader et csv.DictReader.

Examinons ces classes une par une.

Lire le fichier CSV ligne par ligne en utilisant csv.reader en Python

La classe csv.reader du module csv nous permet de lire et d’itérer sur les lignes d’un fichier CSV sous forme de liste de valeurs. Regardez l’exemple ci-dessous :

from csv import reader

# open file
with open("Demo.csv", "r") as my_file:
    # pass the file object to reader()
    file_reader = reader(my_file)
    # do this for all the rows
    for i in file_reader:
        # print the rows
        print(i)

Nous utilisons l’objet lecteur pour parcourir les lignes du fichier Demo.csv. L’objet lecteur agit comme un itérateur. Cela garantit qu’une seule ligne reste dans la mémoire à la fois.

Production :

['Roll Number', 'Name', 'Subject']
['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']

Voyons les fonctions utilisées ici.

La fonction open() de Python est utilisée pour ouvrir un fichier. Une fois qu’il ouvre un fichier, il renvoie un objet fichier.

Syntaxe:

open(file_name, mode)

Le paramètre mode spécifie le mode dans lequel nous voulons ouvrir le fichier. Il peut être read, append, write, ou create.

La fonction reader() permet de lire un fichier. Il renvoie un objet lecteur itérable. Dans l’exemple ci-dessus, cet objet itérable est file_reader, ce qui doit être clair à partir de l’utilisation de la boucle for.

Dans l’exemple ci-dessus, les en-têtes sont également imprimés. Nous pouvons également imprimer un fichier CSV sans en-tête. Regardez l’exemple suivant :

from csv import reader

# skip the first line(the header)
with open("Demo.csv", "r") as my_file:
    file_csv = reader(my_file)
    head = next(file_csv)

    # check if the file is empty or not
    if head is not None:
        # Iterate over each row
        for i in file_csv:
            # print the rows
            print(i)

Production :

['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']

Ici, les en-têtes ne sont pas imprimés. Cette approche fonctionne de la même manière que l’approche précédente, sauf que nous sautons la première ligne lors de l’itération. Nous avons utilisé la fonction next() pour ignorer l’en-tête.

La fonction next() en Python renvoie l’élément suivant présent dans un itérateur. Sa syntaxe est décrite ci-dessous.

Syntaxe:

next(iterable_object / iterable, default)

Iterable ou iterable object est l’ensemble de valeurs à travers lequel nous devons itérer. default est un paramètre facultatif qui est renvoyé par l’itérable s’il atteint sa fin.

Lire le fichier CSV ligne par ligne à l’aide de l’objet DictReader en Python

csv.reader lit et imprime le fichier CSV sous forme de liste.

Cependant, l’objet DictReader itère sur les lignes du fichier CSV comme un dictionnaire. La façon dont csv.reader renvoie chaque ligne sous forme de liste, ObjectReader renvoie chaque ligne sous forme de dictionnaire.

Regardez l’exemple ci-dessous :

from csv import DictReader

# open the file
with open("Demo.csv", "r") as my_file:
    # passing file object to DictReader()
    csv_dict_reader = DictReader(my_file)

    # iterating over each row
    for i in csv_dict_reader:
        # print the values
        print(i)

Production :

{'Roll Number': '1', 'Name': 'Harry Potter', 'Subject': 'Magical Creatures'}
{'Roll Number': '2', 'Name': 'Ron Weasley', 'Subject': 'Divinition'}
{'Roll Number': '3', 'Name': 'Hermione Granger', 'Subject': 'Dark arts'}

La fonction DictReader est similaire à la fonction reader à l’exception de la façon dont elle renvoie les informations. Il mappe et renvoie les valeurs sous forme de dictionnaire où les noms de champ agissent comme des clés du dictionnaire et les valeurs sont constituées des données d’une ligne particulière.

Conclusion

Dans cet article, nous avons abordé les bases du CSV. Nous avons également vu les deux manières de lire un CSV ligne par ligne en Python. Nous avons également vu comment créer nous-mêmes un fichier CSV à l’aide d’un éditeur de texte comme le Bloc-notes.

Article connexe - Python CSV

Article connexe - Python File