TSV

Che cos’è un file TSV?

Come il CSV ma separato da tabulazioni, così il problema della virgola dentro un campo non si pone nemmeno.

Che cos’è TSV

TSV è un formato di testo semplice che si apre in qualsiasi editor. Si usa per spostare dati fra programmi.

L’estensione è .tsv e il nome per esteso è Tab-Separated Values. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.

Da dove viene TSV

Risale al 1993. La specifica è IANA text/tab-separated-values.

A un formato rimasto leggibile così a lungo si può affidare qualcosa che vuoi ritrovare fra dieci anni.

La specifica è pubblica

È pubblicata per intero, quindi la si può implementare partendo dal documento invece che per osservazione: è per questo che il formato compare in così tanti programmi, ed è per questo che file scritti vent’anni fa si aprono ancora. Una specifica pubblicata però non è la stessa cosa di una esente da royalty: dove un formato incapsula un codec, le licenze sui brevetti restano una questione a parte che lo standard non risolve.

Non si butta via niente

TSV conserva il suo contenuto esattamente. Risalvarlo non cambia nulla, quindi puoi aprirlo, modificarlo e risalvarlo quante volte vuoi senza accumulare danni: è questo che ne fa un formato di lavoro e non di consegna.

Non c’è dove lasciare una nota

TSV non ha una sintassi per i commenti. Tutto ciò che spiega deve vivere fuori dal file, ed è bene saperlo prima di sceglierlo per qualcosa che una persona modificherà a mano.

Che cosa apre TSV

Microsoft Excel, LibreOffice Calc e pandas lo leggono, e così fanno quasi tutti i programmi dello stesso tipo.

Quando un file non si apre, il formato è raramente il problema: più spesso è il programma a essere più vecchio di lui. Convertire in qualcosa di più vecchio è la via d’uscita affidabile, ed è a questo che serve il resto di questo sito.

Aprirlo nel browser

Nessun browser lo legge.

È di gran lunga il motivo più comune per convertirlo: non che il formato sia scadente, ma che il posto in cui vuoi mostrare il file non sappia leggerlo.

È un formato di lavoro

TSV è pensato per essere aperto e modificato. Tieni il file in questo formato per tutto il tempo in cui il lavoro va avanti, ed esporta da lì ogni volta che serve una copia finita.

Che cosa va storto con lui

Le lamentele ricorrenti: i tipi delle colonne vengono indovinati all’importazione invece che dichiarati.

Nessuna di queste è un motivo per evitare il formato. Sono le cose che conviene conoscere prima che una di loro ti sorprenda, che è un’affermazione diversa e più utile.

Il delimitatore che non compare nei vostri dati

Una virgola esce continuamente dentro dati reali: negli indirizzi, nelle ragioni sociali, nelle descrizioni di prodotto, in qualsiasi testo libero. Il CSV lo risolve con regole di quotatura, e quelle regole sono il punto dove il formato si rompe: un campo con una virgoletta dentro un campo tra virgolette che a sua volta contiene una virgola è legale, scomodo, e implementato in modo diverso da metà degli strumenti che dicono di leggere CSV.

Una tabulazione quasi mai compare dentro un campo, perché nessuno la digita in un modulo o in un database. Quindi un TSV può fare a meno della quotatura del tutto: dividete ogni riga sulla tabulazione e avete già i campi, senza automi e senza casi limite. È tutto l’argomento, e con dati reali e sporchi è un argomento forte.

La virgola decimale e perché qui fa più male

In italiano la virgola è il separatore decimale, quindi un prezzo si scrive 1.024,50. Questo rende la virgola un delimitatore particolarmente cattivo per i dati di qui: qualsiasi colonna con importi, percentuali o coordinate la porta già dentro, e basta un’esportazione poco attenta perché una riga di venti campi diventi una di trenta.

Da qui viene un’abitudine diffusa in Italia: esportare con il punto e virgola e continuare a chiamarlo CSV. Funziona finché il file non cambia programma o paese. La tabulazione risolve lo stesso senza ambiguità e senza dipendere dalle impostazioni regionali della macchina che apre il file. Questo convertitore lo tiene presente: partendo da un CSV o da un TSV potete indicare il separatore — rilevamento automatico, virgola, punto e virgola, tabulazione o barra verticale — invece di affidarvi a un’ipotesi.

Dove la tabulazione è l’abitudine locale

La bioinformatica, dove le annotazioni genomiche, le matrici di espressione e le tabelle di varianti sono tabulate per norma. E il lavoro da riga di comando, perché gli strumenti classici di Unix dividono su spazi bianchi e un file separato da tabulazioni è cittadino di prima classe lì, cosa che un CSV con virgolette non è.

Anche i grandi dataset pubblici e le esportazioni di database, dove il contenuto ha virgole e prosa e chi esporta preferisce non pensare alla quotatura. Se vi hanno passato un .tsv o un .tab, viene da uno di questi mondi.

Il difetto di essere invisibile

Il pregio della tabulazione è anche il suo problema: non si vede. Un file con una tabulazione in un punto e quattro spazi in un altro appare identico nell’editor e viene interpretato in modo completamente diverso, e un valore che ha preso una tabulazione alla fine non si distingue da uno che non ce l’ha.

Questo morde soprattutto quando il file viene modificato a mano o costruito da uno script che a un certo punto ha usato spazi. Qualsiasi editor decente sa mostrare i caratteri invisibili, e attivarlo prima di aprire un TSV è un’abitudine da due secondi che evita un’ora di confusione. È anche la ragione per non costruire mai un TSV concatenando stringhe senza guardare cosa portano i campi.

Cosa succede quando il dato contiene davvero una tabulazione

La specifica IANA non ammette sfumature: i campi non possono contenere tabulazioni né a capo, punto. Non c’è meccanismo di escape, ed è esattamente ciò che mantiene semplice l’analisi.

Nella pratica sono cresciute due convenzioni. Alcuni le escapano con sequenze a barra rovesciata, prese in prestito dal C; altri applicano sopra una quotatura in stile CSV, reintroducendo così tutto ciò che il TSV evitava. Nessuna delle due è universale, quindi un file con tabulazioni incorporate costringe chi lo legge a concordare con chi lo ha scritto. Se i vostri dati portano davvero tabulazioni o a capo dentro un campo, il CSV con quotatura corretta è la scelta più onesta.

Excel è il motivo per cui la gente converte

Excel apre un .txt o un .tsv tramite la procedura guidata di importazione e gestisce bene le tabulazioni, mentre il doppio clic fa qualcosa di meno utile a seconda di cosa è associato all’estensione. E applica esattamente la stessa inferenza di tipo che rovina i CSV: gli zeri iniziali spariscono, i codici diventano date e gli identificatori lunghi perdono precisione.

Con dati in italiano questo ha vittime concrete e riconoscibili. Un codice postale 00100 resta 100. Un codice fiscale con uno zero iniziale perde lo zero. Un riferimento come 12-3 diventa una data di dicembre. Il consiglio è identico a quello per il CSV: importare invece di aprire, marcare come Testo le colonne delicate, e se chi lo riceve è una persona e non un programma, mandare un XLSX e togliere di mezzo l’inferenza.

TSV contro CSV, e decide il destinatario

CSV quando il file va verso un posto sconosciuto. È ciò che si aspettano per nome i moduli di caricamento, le routine di importazione e il software gestionale, e uno strumento che ammette solo uno dei due ammetterà CSV.

TSV quando controllate entrambi gli estremi e i dati sono sporchi — pieni di virgole, virgolette e testo libero — oppure quando il lavoro avviene su riga di comando. L’analisi è più semplice, i difetti sono minori e nessuno deve mettersi d’accordo sulle virgolette. Convertire da uno all’altro è meccanico in un senso e richiede attenzione nell’altro: da CSV a TSV bisogna verificare che nessun campo porti una tabulazione, e da TSV a CSV bisogna aggiungere virgolette dove un campo porti una virgola. Un convertitore che salti una delle due cose produce un file dall’aspetto corretto e le colonne spostate in silenzio.

Leggerne uno molto grande, e quando smettere di usarlo

Il TSV si legge a flusso, il suo altro vantaggio silenzioso. Un file di qualsiasi dimensione si può percorrere riga per riga senza caricarlo tutto, quindi un’esportazione di diversi gigabyte è gestibile in un modo che il foglio di calcolo equivalente non è.

Per qualcosa di davvero grande che analizzerete ripetutamente, il Parquet è una destinazione migliore: colonnare, compresso, con tipi, e molto più veloce per le query che si fanno davvero. Il TSV è il formato giusto per scambiare e quello sbagliato per un dataset che leggerete cento volte.

Che cosa fa questo convertitore con un TSV

Le conversioni fra TSV, CSV, JSON, NDJSON, XLSX e Parquet avvengono dentro il vostro browser, senza che il file esca dal computer, con un tetto di 100 MB per file e 100 file per gruppo, e senza alcuna quota giornaliera. SQL compare solo come destinazione: si può scrivere una tabella come istruzioni di inserimento, e non si legge da lì.

C’è una trasformazione da conoscere prima di scegliere la destinazione. Una tabella è piatta e un JSON non deve esserlo per forza, quindi scrivendo un TSV — come scrivendo CSV, SQL, XLSX o Parquet — gli oggetti annidati vengono appiattiti in colonne il cui nome è il percorso separato da punti, e gli indici di un array sono un ulteriore tratto di quel percorso. La conversione funziona e la forma originale non torna: passare da JSON a TSV e da TSV a JSON non restituisce il documento di partenza, ma una tabella con nomi di colonna lunghi. Se la struttura conta, la destinazione è JSON o YAML, non una tabella.

I dati, in un posto solo

Identificativi e provenienza del formato TSV.
Estensione.tsv, .tab
Tipo di mediatext/tab-separated-values
Prima pubblicazione1993
SpecificaIANA text/tab-separated-values