2009-12-25 35 views
152

Esiste un modo ufficiale per consentire a un file in formato CSV di consentire i commenti, sia sulla propria linea OPPURE alla fine di una riga?Un file CSV può avere un commento?

ho provato a controllare wikipedia su questo e anche RFC 4180 ma entrambi non menziona nulla che mi porta a credere che non fa parte del formato di file in modo che sia sfortuna per me e io dovrebbe quindi utilizzare un separato file di thingy ReadMe.txt per spiegare il file.

Infine, so che è facile per me aggiungere i miei commenti, ma speravo che qualcosa come Excel potesse importarlo subito senza che il consumatore debba personalizzare il processo di importazione.

Quindi, pensieri?

+1

Cosa vorresti lasciare un commento sopra? I valori in ogni riga o il file stesso? Il file XML è un'alternativa per te? –

+3

Il preposale è stato abbattuto per [Python] (http://bugs.python.org/issue1225769). – new123456

+2

Forse una stringa di versione per i dati @SquareRigMaster. Proprio come sto cercando di fare ora? –

risposta

78

Il CSV "standard" (così com'è) non determina come devono essere gestiti i commenti, no, spetta all'applicazione stabilire una convenzione e attenersi ad essa.

+19

RFC 4180 è lo standard ora. – vipw

+13

RFC 4180 non è uno standard, [rfc4180] (http://tools.ietf.org/html/rfc4180) dice: "Questo promemoria fornisce informazioni per la comunità di Internet, che non specifica uno standard Internet di alcun tipo, . La distribuzione di questo memo è illimitata. " –

+7

OK, possiamo dire che è uno standard di fatto? –

2

Un file separato da virgola è in realtà solo un file di testo in cui le righe sono costituite da valori separati da virgole.

Non esiste uno standard che definisca il contenuto di un file CSV, quindi non esiste un modo definito per indicare un commento. Dipende dal programma che importerà il file CSV.

Naturalmente, questo è in genere Excel. Dovresti chiederti come definisce un commento Excel? In altre parole, cosa renderebbe Excel ignorare una riga (o parte di una riga) nel file CSV? Non sono a conoscenza di nulla che possa farlo.

+1

'Non esiste uno standard che definisca il contenuto di un file CSV. [Falso.] (Http://tools.ietf.org/html/rfc4180) – Qix

+3

@Qix - dalla sezione 2 del documento di riferimento:" Mentre ci sono varie specifiche e implementazioni per il formato CSV (per esempio [4], [5], [6] e [7]), non esistono specifiche formali " –

23

No, CSV non specifica alcun modo di codificare i commenti: verranno caricati solo da programmi come Excel come celle aggiuntive contenenti testo.

Il più vicino che è possibile gestire (con CSV importato in un'applicazione specifica come Excel) consiste nel definire un modo speciale di codificare i commenti che Excel ignorerà. Per Excel, puoi "nascondere" il commento (in misura limitata) incorporandolo in una formula. Ad esempio, prova a importare il seguente file CSV in Excel:

=N("This is a comment and will appear as a simple zero value in excel") 
John, Doe, 24 

È ancora finire con una cella del foglio di calcolo che consente di visualizzare il numero 0, ma il commento è nascosto.

In alternativa, è possibile nascondere il testo semplicemente imbottitura fuori con gli spazi in modo che non viene visualizzata nella parte visibile di cellula:

       This is a sort-of hidden comment!, 
John, Doe, 24 

Si noti che è necessario seguire il testo con un commento virgola in modo che Excel riempia la cella seguente e quindi nasconda qualsiasi parte del testo che non si adatta alla cella.

Nasty hack, che funzioneranno solo con Excel, ma potrebbero essere sufficienti per rendere l'output un po 'più ordinato dopo l'importazione.

6

Penso che il modo migliore per aggiungere commenti a un file CSV sia aggiungere un campo "Commenti" o registrare direttamente nei dati.

La maggior parte delle applicazioni di analisi CSV che ho utilizzato implementano sia la mappatura del campo che la scelta del record. Quindi, per commentare le proprietà di un campo, aggiungi un record solo per le descrizioni dei campi. Per commentare un record, aggiungi un campo alla fine di esso (beh, tutti i record, in realtà) solo per i commenti.

Questi sono gli unici due motivi per cui posso commentare un file CSV. Ma l'unico problema che posso prevedere sono i programmi che rifiutano di accettare il file se nessun singolo record non supera alcune regole di validazione. In tal caso, avresti problemi a scrivere un record di descrizione campo di tipo stringa per qualsiasi campo numerico.

Non sono affatto un esperto, quindi, sentitevi liberi di segnalare eventuali errori nella mia teoria.

+1

Aaand, io _giusto_ ho letto che non volevi personalizzare il processo di importazione. Mi dispiace per quello. Spero che qualcuno lo trovi utile, allora. –

1

Se avete bisogno di qualcosa di simile a:

│ A        │ B 
──┼────────────────────────────────┼─── 
1 │ #My comment, something else │ 
2 │ 1        │ 2 

tuo CSV possono contenere le seguenti righe:

"#My comment, something else" 
1,2 

Prestare particolare attenzione alle 'citazioni' nella prima riga.

Quando si converte il testo in colonne utilizzando la procedura guidata di Excel, ricordare di selezionare "Considera delimitatori consecutivi come uno", impostandolo per utilizzare "virgolette" come delimitatore.

Così, Excel dividerà il testo alle virgole, mantenendo la linea 'commento' come un singolo valore di colonna (e sarà rimuovere le virgolette).

19

In dati tecnici, è comune vedere il simbolo # nella prima colonna utilizzato per segnalare un commento.

Io uso il ostermiller CSV parsing library di leggere e trattare i file. Quella libreria ti consente di impostare il carattere del commento. Dopo l'operazione di analisi si ottiene un array che contiene solo i dati reali, nessun commento.

2

Se stai analisi del file con un comando FOR in un file batch funziona un punto e virgola (;)

REM test.bat contents 

for /F "tokens=1-3 delims=," %%a in (test.csv) do @Echo %%a, %%b, %%c 

;test.csv contents (this line is a comment) 

;1,ignore this line,no it shouldn't 

2,parse this line,yes it should! 

;3,ignore this line,no it shouldn't 

4,parse this line,yes it should! 

USCITA:

2, parse this line, yes it should! 

4, parse this line, yes it should! 
+0

!! Sei il vero Ken Bob scalzo? –

Problemi correlati