Python CSV : lecture et écriture de feuilles de calcul

Apprenez à gérer les données CSV en Python. Maîtrisez csv.reader, csv.writer et DictReader/DictWriter pour une analyse efficace des tables.

Essayez dans l'éditeur

Aperçu

CSV (Comma-Separated Values) est un format omniprésent pour exporter et importer des données à partir de feuilles de calcul et de bases de données relationnelles. Les fichiers CSV étant de simples fichiers texte, ils sont universellement pris en charge par les outils analytiques, les plateformes de bases de données et les langages de programmation. Python dispose d'un module « csv » intégré spécialement optimisé pour l'analyse, l'écriture et la manipulation de données tabulaires sans avoir besoin de bibliothèques tierces comme les pandas.

Le module csv fournit deux interfaces principales : les lecteurs/écrivains basés sur des listes et les lecteurs/écrivains basés sur un dictionnaire. `csv.reader()` et `csv.writer()` représentent chaque ligne du CSV sous la forme d'une liste de chaînes, ce qui est simple mais nécessite de référencer les colonnes par leur index numérique. Pour une approche plus robuste, les développeurs utilisent `csv.DictReader()` et `csv.DictWriter()`. Ces classes mappent chaque ligne à un dictionnaire en utilisant la ligne d'en-tête CSV comme clés, produisant un code hautement lisible qui ne se casse pas si les colonnes sont réorganisées.

Lorsqu'il s'agit de fichiers CSV, les détails de la syntaxe sont importants. Différents programmes utilisent différents délimiteurs (comme des tabulations ou des points-virgules) et gèrent les guillemets ou les fins de ligne de manière distincte. Le module `csv` vous permet de définir des délimiteurs personnalisés, des règles de citation et des caractères d'échappement via un paramètre 'dialect'. De plus, lors de l'ouverture de fichiers CSV en Python, il est essentiel de transmettre `newline=''` à la fonction `open()` pour éviter les problèmes de lignes vides sur différents systèmes d'exploitation.

Sortie de code et d'exécution

Écrire des données dans un fichier CSV à l'aide de DictWriter et les relire avec DictReader.

import csv

filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
    {"id": "101", "name": "Bob", "department": "HR"},
    {"id": "102", "name": "Alice", "department": "Engineering"}
]

# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

print("CSV written successfully.\n--- Reading CSV ---")

# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(f"Employee {row['name']} works in {row['department']}.")
Sortie terminale
CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.

Mise en œuvre étape par étape

  • Exportation d'enregistrements de feuille de calcul pour l'analyse financière
  • Importation de catalogues de listes de contacts dans des bases de données
  • Formatage des sorties statistiques à partir de scripts informatiques

Foire aux questions

Pourquoi dois-je spécifier newline="" lors de l'ouverture d'un fichier CSV ?

Ceci est requis par le rédacteur interne du module csv pour empêcher l'insertion de lignes vides supplémentaires, en particulier sur les plates-formes Windows.

Comment puis-je analyser un fichier CSV qui utilise des tabulations au lieu de virgules ?

Vous pouvez transmettre le paramètre delimiter au lecteur ou à l'écrivain, par exemple csv.reader(file, delimiter='\t').

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.