CSV vs TSV: Quale formato delimitatore dovresti usare?
Risposta rapida
Utilizza CSV per lo scambio di dati generici, l'importazione/esportazione di fogli di calcolo e la massima compatibilità. Utilizza TSV quando i tuoi dati contengono virgole ma non tabulazioni, per evitare virgolette e sfuggire alla complessità. TSV è comune in bioinformatica e PNL; CSV è l'impostazione predefinita universale per i dati tabulari.
Introduzione
CSV (Valori separati da virgole) e TSV (Valori separati da tabulazioni) sono due formati di testo normale per i dati tabulari. Entrambi memorizzano le righe come linee con campi separati da un delimitatore. CSV utilizza le virgole; TSV utilizza i caratteri di tabulazione. La scelta del delimitatore influisce sull'escape, sulla compatibilità con le app per fogli di calcolo e sulla gestione dei campi di testo contenenti il delimitatore.
Passo dopo passo
-
Confronta delimitatore ed escape
CSV utilizza le virgole. Se un campo contiene una virgola, deve essere racchiuso tra virgolette: "Smith, John". Se un campo contiene virgolette, è necessario eseguire l'escape: "Ha detto ""ciao""". TSV utilizza le schede. Le schede appaiono raramente nei dati di testo, quindi i campi TSV di solito non necessitano di virgolette o caratteri di escape: l'analisi è più semplice.
-
Confronta la compatibilità
CSV è universalmente supportato: Excel, Fogli Google=Fogli, ogni database, ogni linguaggio di programmazione. Anche TSV è ampiamente supportato ma meno standardizzato: alcuni strumenti interpretano le schede in modo diverso. Excel rileva automaticamente entrambi, ma CSV è il formato di esportazione predefinito.
-
Confronta la complessità dell'analisi
L'analisi CSV richiede una macchina a stati per gestire le regole di quotazione (RFC 4180). TSV l'analisi è banale: divide ogni riga per carattere di tabulazione. Ciò rende TSV più veloce da analizzare e meno soggetto a errori. Tuttavia, CSV ha una specifica formale (RFC 4180); TSV non ha uno standard formale.
-
Confronta i casi d'uso
CSV: importazione/esportazione di fogli di calcolo, dati APIs, pipeline ETL, file di configurazione, scambio dati universale. TSV: bioinformatica (BLAST, GFF), PNL (formato CoNLL), dati degli appunti (copia da Excel = TSV), file di registro con delimitatori di tabulazione.
-
Decidi in base ai tuoi dati
Se i tuoi dati contengono virgole (nomi, indirizzi, frasi): TSV evita le virgolette. Se i tuoi dati contengono tabulazioni (raro nel testo): CSV evita le virgolette. Se hai bisogno della massima compatibilità: CSV. Se desideri un'analisi più semplice e i tuoi dati sono senza schede: TSV.
Esempi
Stessi dati in CSV e TSV
Ingresso: CSV: nome,età,città\n"Smith, John",30,"New York, NY"\nTSV: nome\tage\tcittà\nSmith, John\t30\tNew York, NY
Produzione: CSV richiede virgolette per i campi con virgole. TSV non necessita di virgolette perché le schede non vengono visualizzate nei dati.
Problemi comuni
- CSV casi limite di citazione: i campi contenenti virgole, virgolette o ritorni a capo richiedono le regole di citazione RFC 4180: una divisione ingenua per virgola corromperà i dati con virgole incorporate.
- TSV non ha uno standard formale: a differenza di CSV (RFC 4180), TSV non ha specifiche ufficiali, quindi gli strumenti potrebbero gestire i casi limite in modo diverso: utilizzare TSV solo all'interno di pipeline controllate.
- Problemi di codifica di Excel: Excel potrebbe esportare CSV con distinta base o delimitatori specifici della locale (punto e virgola nelle versioni locali dell'UE): specificare la codifica UTF-8 e verificare il delimitatore durante l'importazione.
- Ambiguità di fine riga: i campi CSV con caratteri di fine riga incorporati sono validi ma interrompono l'analisi riga per riga: TSV raramente presenta questo problema perché le tabulazioni non sono comuni nei dati di testo.
Suggerimenti
- Utilizza CSV per la massima compatibilità: ogni foglio di calcolo, database e linguaggio di programmazione lo supporta in modo nativo.
- Utilizza TSV quando i tuoi dati contengono virgole ma non tabulazioni (nomi, indirizzi, frasi) per evitare di citare interamente la complessità.
- Utilizzare sempre un parser CSV corretto (non string.split) per gestire le regole di virgolettatura RFC 4180: la suddivisione ingenua corrompe i campi con virgole o virgolette incorporate.
- Quando si copiano dati da Excel a un editor di testo, gli appunti utilizzano il formato TSV: incollali in un file .tsv per preservare correttamente i campi con virgole.