Italiano

Dati e fogli di calcolo · CSV Pulitore

CSV Dialetti di escape: virgolette doppie, barre rovesciate ed esportazioni di database

· Sfondo

csv analisi interoperabilità

Un percorso CSV con virgolette doppie che ha successo mentre un escape con barra rovesciata rimane testo letterale
Illustrazione vettoriale originale ToolAcre

RFC 4180 dice di raddoppiare una virgoletta; diversi strumenti di database esportano invece con barre rovesciate. Questo post spiega le convenzioni di fuga in circolazione, da dove provengono e perché un file valido in un dialetto si rompe in un altro.

Un'esportazione di database che un foglio di calcolo legge con barre rovesciate sparse: due tradizioni in fuga che si scontrano in un unico file

Un'esportazione può contenere una barra rovesciata seguita da una virgoletta perché il suo produttore segue una convenzione di stile del linguaggio di programmazione, mentre un parser orientato al foglio di calcolo si aspetta virgolette doppie. Confondere un dialetto con l'altro non crea un compromesso neutrale. Cambia il punto in cui lo stato tra virgolette si apre e chiude o lascia i caratteri di escape nei dati.

ToolAcre supporta una regola chiara: i campi possono essere racchiusi tra virgolette doppie e una virgoletta interna è rappresentata da due virgolette. La barra rovesciata non ha alcun ruolo di escape. Identificare il contratto prima di caricarlo è più sicuro che chiedere all'addetto alle pulizie di indovinare quale punteggiatura intendeva il produttore.

La convenzione RFC: racchiudi tra virgolette doppie e raddoppia qualsiasi virgoletta interna, senza alcun carattere di escape

Per un valore come `She said "hello", then left`, RFC-style CSV circonda il campo e scrive due volte i segni interni. Il delimitatore rimane all'interno dello stato tra virgolette e ogni coppia raddoppiata restituisce una virgoletta letterale. La serializzazione applica la stessa trasformazione al contrario.

I campi vengono citati quando contengono il delimitatore, la virgoletta, LF, CR o gli spazi circostanti correnti oppure ogni volta che viene selezionato Citazione di ogni campo. Non esiste un carattere di escape separato. Questa piccola grammatica viene testata per delimitatori, terminazioni di record incorporati e coppie di virgolette.

La tradizione del C: virgolette con escape, ritorni a capo e delimitatori ereditati dai linguaggi di programmazione e da alcuni caricatori di database

Alcuni sistemi di origine possono definire convenzioni con la barra rovesciata, ma ToolAcre non dispone di opzioni per queste. Una barra rovesciata viene aggiunta al campo corrente come qualsiasi carattere normale. Una citazione successiva viene quindi interpretata a seconda che il parser sia nello stato tra virgolette e se abbia una citazione accoppiata.

Di conseguenza, un'esportazione con barra rovesciata deve essere analizzata da uno strumento configurato per quel dialetto prima della conversione in virgolette doppie CSV. La ricerca e sostituzione è rischiosa perché le barre rovesciate letterali e le sequenze di escape possono assomigliarsi. La grammatica di origine deve decidere quali sono la sintassi.

L'escape della barra rovesciata è un dialetto alternativo non supportato, non è una modalità che ToolAcre può leggere

La cartella di lavoro nomina i prodotti database e le librerie di frame di dati, ma i loro valori predefiniti e le modalità configurabili non sono documentati in questo repository. Questo articolo non attribuisce un dialetto a nessun particolare fornitore. Consultare l'esatta documentazione dell'esportatore o del caricatore utilizzata dal flusso di lavoro.

Cattura il comando e le opzioni che hanno prodotto il file. Un prodotto può supportare diverse modalità, quindi il suo nome da solo non è un dialetto. La riproducibilità deriva dalla configurazione più un campione contenente casi limite delimitatore, virgoletta, nuova riga e barra rovesciata.

Le impostazioni predefinite specifiche di database e librerie richiedono la propria documentazione e non sono rivendicate qui

Con questo parser, `"a \"quote\"",b` non significa ciò che un lettore in stile C potrebbe aspettarsi, perché le barre rimangono nel testo e le virgolette governano lo stato CSV. Al contrario, una coppia raddoppiata all'interno di un campo tra virgolette diventa una virgoletta anziché due caratteri letterali.

Una mancata corrispondenza può attivare colonne spostate o un avviso di virgolette non chiuse, oppure può essere analizzata in stringhe dall'aspetto sbagliato senza errori strutturali. Visualizza in anteprima le righe rappresentative e confrontale con il produttore. Il successo sintattico da solo non può certificare che la semantica di escape corrisponda.

Secondo le regole ToolAcre, le barre rovesciate rimangono letterali e le virgolette doppie sono l'unica via di fuga tra virgolette

Scrivi una cella contenente sia una virgola che una virgoletta come RFC CSV: `"She said ""hi"", then left"`. ToolAcre restituisce il valore esatto `She said "hi", then left`. Scrivi invece la citazione interna con barre rovesciate e osserva che la barra non ha protezione speciale.

Il confronto dimostra le regole del parser senza dipendere dal marchio del database. Dopo un'analisi corretta, il download produce costantemente virgolette doppie. Dopo un'analisi non corrispondente, l'esportazione standardizza semplicemente le celle sbagliate, quindi risolvi il dialetto di origine prima di fidarti del risultato.

Ciò che questo non copre: esportazioni binarie, file a larghezza fissa e caratteri di escape completamente personalizzati

Le esportazioni binarie, i record a larghezza fissa e i caratteri di escape personalizzati sono esterni al percorso. Viene segnalata una citazione non chiusa che utilizza l'input rimanente come un unico campo; l'addetto alle pulizie non deduce dove appartenesse una chiusura mancante. Questa ambiguità non può essere riparata genericamente.

Né l'interfaccia converte automaticamente un dialetto barra rovesciata. Utilizzare un parser che denomina esplicitamente il carattere di escape, ottenere una tabella di stringhe verificate e quindi serializzare secondo la convenzione di destinazione. Ogni grammatica dovrebbe essere applicata una volta ad un confine noto.

Conosci il dialetto su entrambe le estremità: come ToolAcre CSV La riparazione delle citazioni di Cleaner normalizza i campi verso citazioni coerenti che i parser standard leggono

Conosci entrambi gli endpoint. ToolAcre è appropriato quando l'origine segue le virgolette doppie CSV o quando un altro parser ha già normalizzato un dialetto diverso in celle verificate. Il suo output offre citazioni minime o su tutto il campo coerenti e raddoppia ogni citazione incorporata.

Non confondere un download pulito con il rilevamento del dialetto. Il rilevatore automatico sceglie i delimitatori, non le grammatiche di escape. Un affidabile separatore di record di trasferimento, regola di quotazione, politica di nuova riga e codifica insieme, quindi testa un campione contraddittorio prima che i dati di produzione vengano spostati.