Module csv de Python
Les fichiers CSV (valeurs séparées par des virgules) sont un format de fichier courant utilisé pour stocker des données tabulaires.
Les fichiers CSV sont constitués de texte brut, où chaque ligne représente une ligne de données dans le tableau, et chaque colonne est séparée par des virgules (ou d'autres délimiteurs).
Les fichiers CSV sont couramment utilisés pour l'échange de données car ils sont simples et faciles à traiter.
Python fournit uncsvmodule intégré pour lire et écrire des fichiers CSV. Ce module simplifie le processus de gestion des fichiers CSV, permettant aux développeurs de manipuler facilement des données tabulaires.
1. Lecture de fichiers CSV
Pour lire des fichiers CSV, vous pouvez utiliser l'csv.readerobjet. Voici un exemple simple :
Exemple
# Ouvrir le fichier CSV
with open('data.csv', mode='r', encoding='utf-8') as file:
# Créer un objet csv.reader
csv_reader = csv.reader(file)
# Lire les données ligne par ligne
for row in csv_reader:
print(row)
Explication du code :
open('data.csv', mode='r', encoding='utf-8'): En mode lecture seule, ouvrez le fichier nommédata.csvet spécifiez l'encodage en UTF-8.csv.reader(file): Créez uncsv.readerobjet pour lire le contenu du fichier.for row in csv_reader: Lit le contenu du fichier ligne par ligne, et chaque ligne de données est convertie en une liste.
2. Écriture de fichiers CSV
Pour écrire dans des fichiers CSV, vous pouvez utiliser l'csv.writerobjet. Voici un exemple :
Exemple
# Données à écrire
data = [
['Nom', 'Âge', 'Ville'],
['Alice', '30', 'New York'],
['Bob', '25', 'Los Angeles']
]
# Ouvrir le fichier CSV
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
# Créer un objet csv.writer
csv_writer = csv.writer(file)
# Écrire des données
for row in data:
csv_writer.writerow(row)
Explication du code :
open('output.csv', mode='w', encoding='utf-8', newline=''): En mode écriture, ouvrez le fichier nomméoutput.csvet spécifiez l'encodage en UTF-8.newline=''Utilisé pour éviter les lignes vides dans les systèmes Windows.csv.writer(file): Créez uncsv.writerobjet pour écrire le contenu du fichier.csv_writer.writerow(row): Écrit chaque ligne de données dans le fichier.
3. Lecture et écriture de fichiers CSV à l'aide de dictionnaires
csvLe module fournit également lesDictReaderetDictWriterclasses, qui peuvent analyser chaque ligne d'un fichier CSV pour la convertir en dictionnaire, ou écrire des dictionnaires dans un fichier CSV.
UtilisationDictReaderpour lire des fichiers CSV :
Exemple
with open('data.csv', mode='r', encoding='utf-8') as file:
csv_dict_reader = csv.DictReader(file)
for row in csv_dict_reader:
print(row)
UtilisationDictWriterpour écrire des fichiers CSV :
Exemple
data = [
{'Name': 'Alice', 'Age': '30', 'City': 'New York'},
{'Name': 'Bob', 'Age': '25', 'City': 'Los Angeles'}
]
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
fieldnames = ['Name', 'Age', 'City']
csv_dict_writer = csv.DictWriter(file, fieldnames=fieldnames)
# Écrire l'en-tête
csv_dict_writer.writeheader()
# Écrire des données
for row in data:
csv_dict_writer.writerow(row)
Attributs et méthodes courants
Méthodes principales du module csv
| Méthode | Description | Exemple |
|---|---|---|
csv.reader() | Lire les données CSV à partir d'un objet fichier | reader = csv.reader(file) |
csv.writer() | Écrire des données dans un fichier CSV | writer = csv.writer(file) |
csv.DictReader() | Lire les lignes CSV sous forme de dictionnaires (avec en-tête) | dict_reader = csv.DictReader(file) |
csv.DictWriter() | Écrire des dictionnaires dans un fichier CSV (noms de champs requis) | dict_writer = csv.DictWriter(file, fieldnames) |
csv.register_dialect() | Enregistrer un format CSV personnalisé (par ex. délimiteur) | csv.register_dialect('mydialect', delimiter='|') |
csv.unregister_dialect() | Supprimer un dialecte enregistré | csv.unregister_dialect('mydialect') |
csv.list_dialects() | Lister tous les dialectes enregistrés | print(csv.list_dialects()) |
Méthodes courantes des objets csv.reader et csv.writer
| Méthode | Description | Objet applicable |
|---|---|---|
__next__() | Lire itérativement la ligne suivante (ou utiliser uneforboucle) | reader |
writerow(row) | Écrire une seule ligne de données | writer |
writerows(rows) | Écrire plusieurs lignes de données (une liste de listes) | writer |
Caractéristiques des objets csv.DictReader et csv.DictWriter
| Fonctionnalité/Méthode | Description | Exemple |
|---|---|---|
fieldnames | Liste des noms de champs (DictReaderautomatiquement obtenue à partir de la première ligne) | dict_reader.fieldnames |
writeheader() | Écrire la ligne d'en-tête (DictWriterexclusif) | dict_writer.writeheader() |
Descriptions des paramètres courants
| Paramètre | Description | Valeur d'exemple | Méthode applicable |
|---|---|---|---|
delimiter | Délimiteur de champ | ','(par défaut)'\t' | reader/writer |
quotechar | Caractère de citation (encadre les champs spéciaux) | '"'(par défaut) | reader/writer |
quoting | Règle de citation | csv.QUOTE_ALL(tout mettre entre guillemets) | reader/writer |
skipinitialspace | Ignorer les espaces après le délimiteur | True/False | reader |
lineterminator | Terminateur de ligne | '\r\n'(par défaut) | writer |
dialect | Nom du dialecte prédéfini | 'excel'(par défaut) | Toutes les méthodes |
Exemple
1. Lecture de fichiers CSV
Exemple
with open('data.csv', 'r') as fichier:
reader = csv.reader(file, delimiter=',')
for row in reader:
print(row) # Chaque ligne est une liste
2. Écriture de fichiers CSV
Exemple
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data) # Écrire plusieurs lignes
3. Utilisation de DictReader et DictWriter (avec en-tête)
Exemple
with open('data.csv', 'r') as fichier:
dict_reader = csv.DictReader(file)
for row in dict_reader:
print(row['Name'], row['Age']) # Accès via les noms de champs
# Écrire
fieldnames = ['Name', 'Age']
with open('output.csv', 'w', newline='') as file:
dict_writer = csv.DictWriter(file, fieldnames=fieldnames)
dict_writer.writeheader() # Écrire l'en-tête
dict_writer.writerow({'Name': 'Alice', 'Age': 25})
4. Dialectes personnalisés (p. ex., gestion des fichiers TSV)
Exemple
with open('data.tsv', 'r') as fichier:
reader = csv.reader(file, dialect='tsv')
for row in reader:
print(row)