Italiano

Dati e fogli di calcolo · CSV Pulitore

RFC 4180 Spiegato: la cosa più vicina che CSV deve essere a uno standard ufficiale

· Sfondo

csv rfc-4180 formati di dati

Record CSV con separatori a virgola, terminazioni CRLF e virgolette doppie allineate in un output coerente
Illustrazione vettoriale originale ToolAcre

CSV esisteva da decenni prima che qualcuno lo scrivesse. Questo post illustra RFC 4180, cosa dice effettivamente su delimitatori, virgolette, terminazioni di riga e intestazioni e perché i file del mondo reale continuano a ignorarlo.

Due file CSV "validi" che nessun singolo parser legge correttamente: perché il formato è cresciuto per decenni senza uno standard

Due file possono entrambi avere un'estensione .csv mentre uno utilizza il punto e virgola, l'altro la tabulazione e ciascuno applica le virgolette in modo diverso. Un parser deve conoscere un dialetto prima che la punteggiatura diventi struttura. ToolAcre inizia con quattro candidati e valuta le forme campione analizzate anziché fidarsi dell'estensione.

Questa flessibilità spiega perché “valido CSV” è spesso una descrizione incompleta. Il pulitore può accettare deviazioni comuni e quindi serializzare un risultato coerente. Il suo comportamento è definito dalla configurazione e dai test, fornendo un contratto più utile rispetto al presupposto che ogni produttore segua perfettamente un promemoria.

Cos'è RFC 4180: una nota informativa di 2005 che documenta la pratica comune, non uno standard vincolante

Il repository nomina ripetutamente RFC 4180 come convenzione di output, ma non è una fonte di affermazioni storiche sulla data o sullo stato legale del promemoria. Questo articolo si concentra quindi sulle regole incarnate dall'implementazione: terminazioni dei record, virgolette, larghezza dell'intestazione e gestione dei delimitatori.

Quando la storia degli standard esterni è importante, citare la pubblicazione principale separatamente. Per utilizzare ToolAcre, la prova rilevante è locale: il codice predefinito è CRLF, virgolette caratteri strutturali, raddoppia le virgolette interne e segnala una riga la cui larghezza è diversa dall'intestazione.

Le prove del repository utilizzano RFC 4180 come convenzione di destinazione; la cronologia delle pubblicazioni è esterna all'insieme delle fonti

Il target configurato descrive l'output delimitato da virgole, le terminazioni di riga CRLF, un concetto di intestazione opzionale e righe rettangolari. Nel percorso spedito la prima riga in pratica non è facoltativa: viene sempre utilizzata come intestazione. Un file senza intestazione perde il primo record di quel ruolo.

L'input irregolare non causa il rifiuto. Le righe corte sono riempite con celle vuote; le righe lunghe mantengono gli extra ed entrambe ricevono avvisi numerati di riga. Il serializzatore scrive ogni riga conservata, quindi "output pulito" non significa che il programma abbia indovinato come risolvere il disaccordo strutturale.

Citazione secondo il promemoria: quando i campi devono essere citati e come viene raddoppiata una virgoletta doppia letterale

Un campo deve essere racchiuso tra virgolette quando contiene il delimitatore scelto, una virgoletta o un carattere di fine record. ToolAcre inoltre cita gli spazi iniziali o finali in modo che un altro parser non li tagli silenziosamente. All'interno di un campo tra virgolette, ogni virgoletta doppia letterale diventa due virgolette doppie.

Il Quote ogni interruttore di campo richiede uno stile uniforme; altrimenti l'output viene citato minimamente. Le virgolette di origine ridondanti potrebbero scomparire mentre i valori analizzati rimangono uguali. Questa normalizzazione è prevista ed è il motivo per cui i test confrontano la tabella recuperata e l'output esatto per gli esempi selezionati.

Il tipo di supporto text/csv: i parametri opzionali di intestazione e set di caratteri e il motivo per cui raramente viaggiano con un file su disco

Un file su disco raramente arriva con parametri di tipo multimediale allegati. ToolAcre non legge un parametro `header` o `charset` dal file selezionato. Si basa sul contratto di instradamento: testo UTF-8, un'intestazione della prima riga e rilevamento delimitatore supportato o selezione manuale.

L'opzione di esportazione BOM facoltativa scrive U+FEFF prima della prima intestazione. Ciò può aiutare un foglio di calcolo a riconoscere UTF-8, ma la configurazione avverte che può interrompere lo script rigoroso o l'importazione del database perché il marcatore si unisce al nome quando non viene rimosso. Lasciarlo spento a meno che il consumatore non lo richieda.

Dove il mondo diverge: punto e virgola, terminazioni di riga LF, righe irregolari e codifiche senza etichetta, e perché il promemoria non tollera nulla di tutto ciò

L'input reale può utilizzare punto e virgola, tabulazione o barra verticale, LF o CR singolo, righe irregolari e UTF-8 BOM iniziale. Il parser accetta intenzionalmente tutte quelle terminazioni di riga e candidati delimitatori. Non “tollera” silenziosamente le file irregolari; conserva i dati e allega un avviso.

Un preventivo non chiuso è un'altra condizione accettata ma segnalata. Tutto dopo la virgoletta di apertura diventa un campo, perché non esiste un confine di chiusura univoco. Correggi quella fonte prima di fidarti dell'esportazione. L'analisi permissiva è una strategia di conservazione, non una certificazione che l'input fosse conforme.

ToolAcre accetta diverse deviazioni del mondo reale segnalando righe irregolari invece di rifiutarle

Nessuna regola qui fornisce alle celle tipi numerici, booleani o nulli. Il parser restituisce stringhe e il convertitore JSON le preserva come stringhe. Le convenzioni semantiche devono essere concordate dal mittente e dal destinatario, incluso se manca il testo vuoto e se una sequenza di cifre è un identificatore.

La sicurezza dell'iniezione di formule è una politica di esportazione stratificata sopra la sintassi CSV. Se abilitati, i caratteri iniziali rischiosi ricevono un apostrofo tranne che nelle forme numeriche ordinarie. Ciò modifica deliberatamente i valori per la sicurezza del foglio di calcolo; non fa parte dell'escape delle virgolette o di un sistema di tipi generale.

Punta a un output in stile RFC anche quando gli input lo ignorano: come ToolAcre CSV Cleaner ripara i file con delimitazioni e virgolette coerenti

Puntare a risultati prevedibili anche quando il dialetto di origine varia. Dopo l'analisi e la risoluzione degli avvisi, ToolAcre genera record CRLF e caratteri di escape standard con virgolette doppie. Se il delimitatore rilevato rimane il punto e virgola o la tabulazione, il download mantiene quel delimitatore anziché forzare sempre la virgola.

Seleziona manualmente la virgola quando un contratto di ricezione richiede un output separato da virgole e controlla il controllo perché visualizza il delimitatore effettivamente utilizzato. La coerenza deriva da una selezione esplicita più una forma di riga rivista, non solo dall'estensione CSV.