Module CSV Python

Le module csv fournit des outils pour lire et écrire dans des fichiers CSV, couramment utilisés pour l’échange de données.

Module csv vs Lecture-Écriture Manuelle de Fichiers

Bien que vous puissiez lire et écrire des fichiers CSV en utilisant des opérations de fichier de base et des méthodes de chaîne (comme open() avec read ou write et split()), le module csv est conçu pour gérer les cas limites tels que les champs entre guillemets, les délimiteurs intégrés et les différentes fins de ligne. Il assure la compatibilité avec les fichiers CSV générés par d'autres programmes (comme Excel) et réduit le risque d'erreurs d'analyse. Pour la plupart des tâches CSV, préférez le module csv à l'analyse manuelle.
Pour en savoir plus sur les bases de la gestion des fichiers, consultez la page Fichiers et Chemins de Répertoire.

Pour commencer, importez le module :

import csv

csv.reader()

Cette fonction reçoit un fichier qui doit être un itérable de chaînes de caractères. En d’autres termes, il doit s’agir du fichier ouvert comme suit :

import csv

file_path = 'file.csv'

# Lire le fichier CSV
with open(file_path, 'r', newline='') as csvfile:
  reader = csv.reader(csvfile)

  # Itérer sur chaque ligne
  for line in reader:
    print(line)

Cette fonction retourne un objet lecteur qui peut être facilement parcouru pour obtenir chaque ligne. Chaque colonne des lignes correspondantes peut être accédée par son index, sans avoir besoin d’utiliser la fonction intégrée split().

csv.writer()

Cette fonction reçoit le fichier à écrire en tant que fichier csv, similaire à la fonction lecteur, elle doit être invoquée comme ceci :

import csv

file_path = 'file.csv'

# Ouvrir le fichier pour écrire le CSV
with open(file_path, 'w', newline='') as csvfile:
  writer = csv.writer(csvfile)

  # faire quelque chose

Le bloc “faire quelque chose” pourrait être remplacé par l’utilisation des fonctions suivantes :

writer.writerow()

Écrit une seule ligne dans le fichier CSV.

# Écrire la ligne d'en-tête
writer.writerow(['name', 'age', 'city'])
# Écrire la ligne de données
writer.writerow(['Alice', 30, 'London'])

writer.writerows()

Écrit plusieurs lignes à la fois.

# Préparer plusieurs lignes
rows = [
    ['name', 'age', 'city'],
    ['Bob', 25, 'Paris'],
    ['Carol', 28, 'Berlin']
]
# Écrire toutes les lignes en une seule fois
writer.writerows(rows)

csv.DictReader

Permet de lire des fichiers CSV et d’accéder à chaque ligne comme un dictionnaire, en utilisant la première ligne du fichier comme clés (en-têtes de colonne) par défaut.

import csv

# Lire le CSV comme un dictionnaire (la première ligne devient les clés)
with open('people.csv', 'r', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    # Accéder aux colonnes par nom au lieu de l'index
    for row in reader:
        print(row['name'], row['age'])
  • Chaque row est un OrderedDict (ou un dict standard dans Python 3.8+).

  • Si votre CSV n’a pas d’en-têtes, vous pouvez les fournir avec le paramètre fieldnames :

    reader = csv.DictReader(csvfile, fieldnames=['name', 'age', 'city'])
    

csv.DictWriter

Permet d’écrire des dictionnaires comme des lignes dans un fichier CSV. Vous devez spécifier les noms de champs (fieldnames, en-têtes de colonne) lors de la création de l’écrivain.

import csv

fieldnames = ['name', 'age', 'city']
rows = [
    {'name': 'Alice', 'age': 30, 'city': 'London'},
    {'name': 'Bob', 'age': 25, 'city': 'Paris'}
]

# Écrire des dictionnaires dans un fichier CSV
with open('people_dict.csv', 'w', newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()  # écrit la ligne d'en-tête
    writer.writerows(rows)
  • Utilisez writer.writeheader() pour écrire les en-têtes de colonne comme première ligne.
  • Chaque dictionnaire dans writer.writerows() doit avoir des clés correspondant aux fieldnames spécifiés lors de la création de l’écrivain.

Paramètres supplémentaires pour csv.reader() et csv.writer()

delimiter

Doit être le caractère utilisé pour séparer les champs. Comme le type de fichier l’indique, la valeur par défaut est la virgule ‘,’. Selon la locale, Excel peut générer des fichiers csv avec le point-virgule comme délimiteur.

import csv

# Lire le CSV avec un délimiteur point-virgule
with open('data_semicolon.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    for row in reader:
        print(row)

lineterminator

Caractère ou séquence de caractères pour terminer une ligne. Le plus courant est “\r\n” mais cela pourrait être “\n”.

quotechar

Caractère utilisé pour mettre entre guillemets les champs contenant des caractères spéciaux (par défaut est ").

# Utiliser l'apostrophe comme caractère de citation
reader = csv.reader(csvfile, quotechar="'")

Pour plus de détails, consultez la documentation officielle du module csv de Python.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.