Italiano

Dati e fogli di calcolo · CSV Pulitore

Come funziona il rilevamento dei delimitatori CSV: virgole, punti e virgola, tabulazioni e barre verticali

· Come funziona

csv pulizia dei dati formati di file

Una riga delimitata da punto e virgola che diventa tre colonne di tabella correttamente separate
Illustrazione vettoriale originale ToolAcre

Un file CSV non dice mai quale carattere separa i suoi campi, quindi il software deve indovinare. Questo post spiega come funziona lo sniffing dei delimitatori, perché fallisce su file complessi e come rendere esplicito il delimitatore.

Un file che si apre come una lunga colonna: perché il delimitatore non è archiviato da nessuna parte in CSV

Un analista di dati apre un'esportazione .csv e vede un campo lungo su ogni riga. L'estensione non dice al lettore quale separatore è stato utilizzato e il file solitamente non contiene dichiarazioni di delimitatore. Un'applicazione che presuppone le virgole leggerà un'intestazione separata da punto e virgola come nome;città;note come una singola colonna. Prima di modificare i valori, chiedi quale carattere divide effettivamente i campi e se l'importatore ha un modo per sovrascrivere la sua ipotesi.

I quattro candidati supportati: virgola, punto e virgola, tabulazione e barra verticale

ToolAcre considera la virgola, il punto e virgola, la tabulazione e la barra verticale come candidati. Un punto e virgola è comune quando le virgole sono già utilizzate come separatori decimali, le tabulazioni evitano le collisioni di punteggiatura nelle esportazioni semplici e le pipe a volte separano i dump di log o database. Lo spazio non è tra le scelte automatiche dello strumento: i nomi e le celle di testo libero spesso contengono spazi. Non aggiungere un candidato semplicemente perché ricorre frequentemente nel testo di esempio; un separatore deve dividere le righe in campi coerenti.

Come funziona lo sniffing: contando i caratteri candidati per riga e preferendo quello che fornisce un conteggio dei campi coerente su tutte le righe

L'implementazione rimuove un segno di ordine dei byte UTF-8 iniziale e analizza un campione di un massimo di dieci righe con ciascun candidato. Registra la larghezza di quelle righe e rifiuta qualsiasi candidato che non produca mai almeno due colonne. Un candidato ottiene un punteggio più alto quando produce più colonne in modo coerente su righe; larghezze incoerenti vengono penalizzate due volte nel punteggio. Fondamentalmente, l'analisi osserva i campi tra virgolette, quindi una virgola all'interno di un indirizzo tra virgolette non conta come confine del campo. Ciò differisce dal conteggio ingenuo dei caratteri ed è il motivo per cui una colonna di indirizzi disordinata non ha bisogno di impedire il rilevamento.

Dove lo sniffing fallisce: colonne di testo libero piene di virgole, file a colonna singola e campi tra virgolette che nascondono il vero separatore

Nessuna ipotesi è infallibile. Un file molto breve ha poche prove, un CSV genuinamente a una colonna non ha candidati che si dividano in due e le citazioni errate possono far sembrare irregolari diverse analisi dei candidati. Una colonna di testo libero piena di separatori può competere con il delimitatore reale quando le virgolette vengono interrotte. I separatori misti tra le righe non sono un dialetto CSV pulito. Lo strumento segnala gli avvisi di analisi ed espone la selezione manuale dei delimitatori; un utente che conosce la convenzione di esportazione a monte può sovrascrivere la scelta dedotta anziché fingere che l'euristica sia una specifica.

Esempio funzionante: un'esportazione separata da punto e virgola con virgole all'interno degli indirizzi, che mostra perché un conteggio ingenuo sceglie il carattere sbagliato

Prova un piccolo esempio con l'intestazione nome;città;nota e una riga Ada;Parigi;"Incontro a 10, vicino alla stazione". Il conteggio delle virgole grezze potrebbe erroneamente favorire la virgola perché la nota contiene segni di punteggiatura, soprattutto su diverse righe di questo tipo. Il parser del punto e virgola restituisce tre campi su entrambe le righe; il parser virgola non fornisce la stessa struttura rettangolare. Verifica che l'anteprima mostri nome, città e nota come colonne separate prima di tagliare, deduplicare o esportare. Se una riga della fonte ha una citazione non chiusa, ispeziona quella riga invece di scartarla silenziosamente per migliorare il punteggio.

Scegliere il delimitatore di output: abbinare il separatore al programma e alle impostazioni locali che leggeranno successivamente il file

Il separatore di input e il separatore di output sono decisioni diverse. Potresti importare un file con punto e virgola europeo ma esportare testo separato da virgole in stile RFC per un programma che prevede virgole. Uno scrittore corretto cita i campi contenenti il ​​delimitatore di output, virgolette incorporate o interruzioni di riga. Decidi se il tuo destinatario ha bisogno di un UTF-8 BOM prima del download; alcune applicazioni per fogli di calcolo ne utilizzano uno per riconoscere la codifica mentre molti parser desiderano il file senza di essa. Controlla l'intestazione scaricata nel programma di destinazione, non solo l'anteprima del browser.

Cosa non copre: file che mescolano delimitatori tra righe ed esportazioni a larghezza fissa che non utilizzano alcun delimitatore

Il rilevamento non può riparare un file che cambia separatore a metà, né può dedurre colonne in un'esportazione a larghezza fissa in cui non esiste alcun delimitatore. Non sa se una virgola tra virgolette fosse intesa come parte di un indirizzo stradale o per un errore di immissione dei dati: segue la sintassi, non il significato. Il pulitore CSV evidenzierà le righe irregolari e ne conserverà i valori anziché indovinare come eliminare i dati di un cliente. Utilizza l'anteprima e gli avvisi per diagnosticare un problema del sistema di origine prima di eseguire passaggi di pulizia irreversibili.

Rendi esplicito il delimitatore invece di sperare: come la riparazione del delimitatore di ToolAcre CSV Cleaner produce un file con un separatore coerente

Un'ipotesi di delimitatore è un'analisi basata sull'evidenza di alcune righe, non una promessa scritta all'interno del file CSV. CSV Cleaner lo implementa localmente nel tuo browser, ti consente di scegliere un separatore diverso e scrive un dialetto di output coerente. Se una procedura guidata di importazione indovina diversamente la prossima settimana, registra la convenzione di output accanto al file in modo che il lettore successivo non debba riscoprirla.