Come leggere e analizzare un file CSV in Python
Scopri come leggere e analizzare i file CSV in Python utilizzando il modulo csv integrato. Padroneggia la lettura come elenchi, lettori di dizionari e delimitatori personalizzati.
Panoramica
CSV (Comma-Separated Values) è un formato di file onnipresente per l'archiviazione di set di dati tabulari. Che si tratti di importare database, esportare fogli di calcolo o scaricare registri, la lettura di CSV è una competenza fondamentale. Python include un modulo `csv` integrato dedicato e altamente ottimizzato per analizzare facilmente i file CSV senza bisogno di librerie di terze parti come Panda.
La funzione `csv.reader` legge un file riga per riga e lo analizza, dividendo ogni riga in base alla virgola delimitatrice e restituendo elenchi di stringhe. Se il tuo file CSV ha una riga di intestazione (ad esempio, etichette di colonna), spesso è preferibile utilizzare `csv.DictReader`. Analizza automaticamente ogni riga in un dizionario in cui le chiavi sono le etichette delle colonne, rendendo il codice molto più leggibile e resistente ai cambiamenti nell'ordine delle colonne.
Quando si aprono file CSV, è consigliabile impostare `newline=""` nell'istruzione `open()`. Ciò impedisce a Python di eseguire traduzioni automatiche di fine riga, che possono portare a errori di analisi su alcuni sistemi operativi. Inoltre, specifica sempre `encoding="utf-8"` per gestire i caratteri speciali.
Codice e output di esecuzione
Questo script dimostra la scrittura di un file CSV di esempio e la sua lettura utilizzando sia csv.reader che csv.DictReader.
import csv
# Writing a sample CSV file
sample_content = [
["name", "role", "salary"],
["Alice", "Developer", "90000"],
["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(sample_content)
# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
reader = csv.reader(file)
header = next(reader) # Skip header row
print("Header:", header)
for row in reader:
print(f"Employee: {row[0]} | Role: {row[1]}")
# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
dict_reader = csv.DictReader(file)
for row in dict_reader:
print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager
--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000Implementazione passo dopo passo
- Importa il modulo CSV integrato nel tuo script.
- Apri il file CSV utilizzando open("employees.csv", "r", newline="", encoding="utf-8") come file.
- Passa l'oggetto file a csv.reader(file) per analizzare le righe del file come elenchi di stringhe.
- Utilizzare csv.DictReader(file) per analizzare le righe come mappature del dizionario corrispondenti alle intestazioni delle colonne.
Domande frequenti
Perché dovrei impostare newline="" quando apro un file CSV?
L'impostazione newline="" impedisce a Python di modificare dinamicamente i caratteri di fine riga, garantendo che il modulo csv possa analizzare correttamente i ritorni a capo in stile csv su diversi sistemi operativi.
Come posso analizzare un file CSV che utilizza tabulazioni o punti e virgola anziché virgole?
È possibile passare un delimitatore personalizzato alla funzione di lettura: csv.reader(file, delimiter="\t") o csv.reader(file, delimiter=";").
Argomenti correlati
Scopri come leggere i file in Python. Padroneggia l'istruzione open, readline, readlines e la gestione sicura delle eccezioni dei file.
Come scrivere su un file in PythonScopri come scrivere testo su file in Python. Padroneggia la differenza tra le modalità di scrittura ("w") e di aggiunta ("a") con gestori di contesto sicuri.
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
I/O di file Python
Scopri come leggere e scrivere file in Python. Padroneggia open(), read(), write() e i gestori di contesto per gestire le operazioni sui file in modo sicuro senza perdite di risorse.
Foglio informativo sulle operazioni sui file Python
Riferimento rapido per leggere e scrivere file in Python. Padroneggia le modalità aperte, i gestori del contesto e la lettura riga per riga.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.