I file CSV sembrano ingannevolmente semplici. Sono solo valori separati da virgole, giusto? Beh, se hai mai avuto a che fare con un CSV che aveva virgole nei valori dei campi, a capo nelle celle o problemi di codifica che trasformavano i nomi in simboli incomprensibili... sai che non è così semplice.

Lascia che ti guidi attraverso tutto ciò che devi sapere per gestire i file CSV come un professionista.

Cos'è realmente il CSV

Alla base, CSV (Comma-Separated Values) è un file di testo semplice dove ogni riga è un record e i valori sono separati da un delimitatore — di solito una virgola. La prima riga contiene tipicamente le intestazioni. Ecco un piccolo esempio:

csv

Sembra facile. Ma in realtà esiste uno standard RFC (RFC 4180) che definisce le regole, e molti file CSV in circolazione non lo rispettano.

Le insidie che ti morderanno

Confusione con la virgola: Non tutti i CSV usano la virgola! In Italia e in molti paesi europei, la virgola è il separatore decimale (come 3,14 per il pi greco), quindi si usa il punto e virgola al suo posto. Ho visto persone perdere ore a debuggare un parser perché avevano dato per scontato il delimitatore virgola su un file separato da punto e virgola. Controlla sempre prima.

Esempio del problema: Il valore "Smith, Jr." contiene una virgola. Se il tuo parser semplicemente divide sulle virgole, otterrai Smith e Jr." come campi separati. L'approccio corretto: racchiudere i campi contenenti virgole tra virgolette doppie.

Problemi di codifica: Un CSV può essere UTF-8, Latin-1 o Windows-1252. Usa la codifica sbagliata e "José" diventa "José". Strumenti moderni come pandas.read_csv() in Python ti permettono di specificare la codifica esplicitamente — fallo sempre.

A capo nei campi: Alcuni campi CSV contengono legittimamente degli a capo. Una colonna "note" potrebbe avere interruzioni di paragrafo. Se il tuo parser non gestisce correttamente i campi tra virgolette, dividerà un singolo record su più righe. Esempio:

csv

Sono 2 record, non 3. L'a capo all'interno delle virgolette fa parte delle note di Alice.

Lavorare con file CSV grandi

Hai un CSV con 10 milioni di righe? Non provare a caricarlo tutto in memoria. Usa lo streaming:

  • Python: Il modulo csv integrato legge riga per riga. Oppure usa pandas.read_csv() con il parametro chunksize per elaborare in batch.
  • Node.js: Librerie come csv-parse supportano la modalità streaming.
  • Riga di comando: Strumenti come awk, cut e csvkit possono elaborare file enormi senza problemi.

Convertire CSV in altri formati

Il CSV è ottimo per dati tabulari piatti — ma non può rappresentare strutture annidate. Hai bisogno di inviare dati utente con indirizzi annidati e cronologie degli ordini? Dovrai convertire in JSON o XML.

Ecco come appare una semplice conversione:

CSV:

csv

JSON:

json

Hai notato come la versione JSON ha automaticamente rilevato che 30 è un numero, non una stringa? I buoni convertitori lo fanno per te. Il nostro Convertitore CSV a JSON gestisce il rilevamento dei tipi, strutture annidate e persino array.

Consigli per scrivere file CSV puliti

  • Usa sempre UTF-8. Fallo e basta. Siamo nel 2026. Non c'è ragione di usare Latin-1 per file nuovi.
  • Includi una riga di intestazione con nomi di colonna descrittivi senza spazi (come nome_completo anziché Nome Completo).
  • Sii coerente con il delimitatore. Scegli virgola o punto e virgola e mantienilo.
  • Racchiudi tra virgolette i campi che contengono caratteri speciali. Meglio prevenire che curare.
  • Non dividere mai manualmente per virgole. Usa una libreria CSV appropriata. I casi limite ti prenderanno. Dai un'occhiata alla documentazione del modulo csv di Python per un buon punto di partenza.
  • Valida dopo il parsing — ricorda, tutti i valori CSV iniziano come stringhe. Converti numeri e date esplicitamente.

Parsing CSV in diversi linguaggi

Vediamo come analizzare correttamente i file CSV in alcuni linguaggi di programmazione popolari. La lezione chiave: non scrivere mai il tuo parser — usa una libreria.

Python — lo standard d'oro per il lavoro con CSV:

python

JavaScript (Node.js):

javascript

Nota come entrambi gli esempi usano DictReader/columns: true per ottenere campi nominati invece di indici di array. Questo rende il tuo codice molto più leggibile e mantenibile.

Il problema del rilevamento del delimitatore

Una delle parti più complicate del lavoro con i file CSV è capire quale delimitatore viene effettivamente usato. Ecco uno scenario reale: ricevi un file chiamato report.csv da un cliente europeo. Lo apri e vedi:

csv

È un file delimitato da punto e virgola con formattazione numerica europea (punti per le migliaia, virgole per i decimali). Se lo analizzi come separato da virgole, ottieni spazzatura. Se provi a convertire i numeri senza capire le impostazioni regionali, ottieni valori sbagliati.

L'approccio migliore è rilevare il delimitatore prima del parsing. La classe csv.Sniffer di Python può aiutare:

python

CSV vs altri formati tabulari

Il CSV non è l'unico formato per dati tabulari. Ecco come si confronta:

FormatoVantaggiSvantaggi
CSVUniversale, semplice, file piccoliNessun tipo, problemi di codifica, caos dei delimitatori
TSVI tab evitano i conflitti con le virgoleAncora nessun tipo, i tab possono essere invisibili
Excel (.xlsx)Tipi, formattazione, formuleFormato binario, file grandi, richiede librerie
ParquetOrientato alle colonne, compresso, tipizzatoBinario, richiede strumenti speciali
JSONDati annidati, valori tipizzatiVerboso per dati tabulari

Per lo scambio di dati tra sistemi, il CSV è ancora il re grazie alla sua semplicità. Per l'analisi e l'archiviazione dei dati, Parquet è sempre più popolare. Per la modifica umana, Excel o Google Sheets sono difficili da battere.

Incubo reale: Excel e CSV non sono sempre d'accordo

Ecco una trappola che ha bruciato molti sviluppatori: quando apri un CSV in Microsoft Excel, Excel "gentilmente" auto-formatta certi valori. Una cella contenente 001234 diventa 1234 (zeri iniziali rimossi). Una cella contenente 1-2 diventa 2 gennaio (interpretato come data). Una cella contenente 1E3 diventa 1000 (interpretato come notazione scientifica).

Questo non è un problema del CSV — è un problema di Excel. Ma i tuoi utenti APRIRANNO i tuoi file CSV in Excel, e SI LAMENTERANNO. Le soluzioni alternative includono:

  • Prefissare le stringhe numeriche con un apice singolo (anche se risulta brutto in altri strumenti)
  • Usare l'estensione .txt e importare con la procedura guidata di importazione dati di Excel
  • Aggiungere un BOM (Byte Order Mark) all'inizio del file per la compatibilità UTF-8
  • Distribuire file Excel invece di CSV quando sai che il pubblico userà Excel

Gestire le date nei CSV

Le date sono un altro campo minato. 01/02/2026 è il 2 gennaio o il 1° febbraio? Dipende se sei americano o europeo. L'unico formato sicuro per le date nei CSV è ISO 8601: 2026-02-01. È inequivocabile, si ordina correttamente come testo ed è riconosciuto praticamente da ogni parser di date di ogni linguaggio di programmazione.

csv

Includi sempre le informazioni sul fuso orario (la Z per UTC, o un offset come +05:30). I CSV senza date consapevoli del fuso orario hanno causato più bug nei dati di quanto chiunque voglia ammettere.

Provalo tu stesso

Lavori con dati CSV? Questi strumenti ti risparmieranno molti mal di testa:

  • Convertitore CSV a JSON — Trasforma il tuo CSV in JSON strutturato con rilevamento automatico dei tipi.
  • Visualizzatore CSV — Visualizza ed esplora i dati CSV in un formato tabella pulito senza bisogno di un'applicazione foglio di calcolo.
  • Formattatore CSV — Pulisci e standardizza i tuoi file CSV per una formattazione coerente.

Ricorda: il CSV può sembrare semplice, ma rispettare i suoi casi limite è ciò che distingue una pipeline di dati affidabile da una che corrompe silenziosamente i tuoi dati.