cat python/csv-dati-a-tabella.md

Lezione 3915 min

CSV: dati a tabella

Usare CSV per dati semplici a righe e colonne.

Prima idea

CSV è un formato semplice per tabelle: ogni riga è un elemento, ogni colonna è un’informazione. Va bene per dati piccoli e facili da aprire anche con un foglio di calcolo.

Questa lezione fa parte del modulo File, dati e piccoli automatismi. L’obiettivo del modulo è: Leggere e salvare dati semplici per costruire programmi che ricordano qualcosa tra un’esecuzione e l’altra.

Parole nuove

  • CSV: file di testo con valori separati da virgole.
  • riga: un elemento della tabella.
  • colonna: un tipo di informazione.

Cosa impari

  • Scrivere righe CSV con il modulo csv.
  • Leggere righe come dizionari.
  • Tenere intestazioni chiare.

Esempio da copiare

import csv

with open("spese.csv", "w", newline="", encoding="utf-8") as file:
    campi = ["voce", "euro"]
    writer = csv.DictWriter(file, fieldnames=campi)
    writer.writeheader()
    writer.writerow({"voce": "merenda", "euro": 3})

Prima copialo senza modificarlo. Poi cambia una cosa sola e riesegui: una parola, un numero, un messaggio o un valore.

Prova guidata

  1. Crea un CSV con voce ed euro.
  2. Scrivi almeno tre righe.
  3. Apri il file e controlla il contenuto.

Esercizi

Base · facile

Crea un CSV con intestazione voce,euro e scrivi una riga di dati con csv.DictWriter.

Soluzione
import csv
with open("spese.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.DictWriter(file, fieldnames=["voce", "euro"])
    writer.writeheader()
    writer.writerow({"voce": "merenda", "euro": 3})

writeheader scrive i nomi delle colonne; ogni writerow aggiunge una riga.

Intermedio · medio

Scrivi almeno tre righe nel CSV partendo da una lista di dizionari (usa un ciclo), poi rileggi il file con csv.DictReader e stampa ogni voce.

Sfida · difficile

Leggi il CSV e calcola il totale della colonna euro, ricordando che i valori letti sono stringhe da convertire. Spiega quando CSV è adatto (dati tabellari semplici) e i suoi limiti rispetto a JSON (niente strutture annidate).

Controllo finale

Hai finito quando il CSV ha intestazione e almeno tre righe di dati.