Un file CSV può avere un commento?


203

Esiste un modo ufficiale per consentire a un file in formato CSV di consentire commenti, sulla propria riga o alla fine di una riga?

Ho provato a controllare Wikipedia su questo e anche su RFC 4180 ma entrambi non menzionano nulla che mi induca a credere che non fa parte del formato del file, quindi è una sfortuna per me e dovrei quindi usare un file ReadMe.txt separato per spiegare il file.

Infine, so che è facile aggiungere i miei commenti, ma speravo che qualcosa come Excel potesse importarlo immediatamente senza che un consumatore dovesse personalizzare il processo di importazione.

Quindi, pensieri?


1
Cosa vorresti commentare? I valori in ciascuna riga o nel file stesso? Il file XML è un'alternativa per te?
Square Rig Master,

3
La preposal è stata abbattuta per Python .
nuovo123456,

2
Forse una stringa di versione per i dati @SquareRigMaster. Proprio come sto cercando di fare ora?
Rob Wells,

@SquareRigMaster - O una dichiarazione sul copyright.
Richard Smith,

Risposte:


116

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


23
RFC 4180 è lo standard ora.
vipw,

34
RFC 4180 non è uno standard, rfc4180 dice: "Questo memo fornisce informazioni per la comunità di Internet. Non specifica uno standard Internet di alcun tipo. La distribuzione di questo memo è illimitata."
Paul Weibert,

14
OK, possiamo dire che è uno standard di fatto?
Marco Sulla

1
Tutti gli RFC sono memo che non intendono fornire alcun standard Internet AFAIK
usr-local-ΕΨΗΕΛΩΝ

5
Yah ... non è vero. Esistono documenti di traccia standard e documenti di traccia non standard (informativi). L'intero processo, comprese le descrizioni, i processi e le regole per i documenti emessi dalla IETF è definito da RFC2026 con alcuni seguiti sulle modifiche. Ogni RFC specificherà all'inizio su quale traccia è attiva.
Steve Hole,

31

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

Uso la libreria di analisi CSV di ostermiller per leggere ed elaborare tali file. Quella libreria ti consente di impostare il carattere del commento. Dopo l'operazione di analisi si ottiene un array contenente solo i dati reali, nessun commento.


30

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

Il più vicino che puoi gestire (con CSV importato in un'applicazione specifica come Excel) è definire un modo speciale di taggare 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

Si finisce ancora con una cella nel foglio di calcolo che visualizza il numero 0, ma il commento è nascosto.

In alternativa, puoi nascondere il testo semplicemente riempiendolo di spazi in modo che non venga visualizzato nella parte visibile della cella:

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

Nota che devi seguire il testo del commento con una virgola in modo che Excel riempia la seguente cella e nasconda quindi qualsiasi parte del testo che non si adatta alla cella.

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


6

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

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

Questi sono gli unici due motivi a cui posso pensare di commentare un file CSV. Ma l'unico problema che posso prevedere sarebbero i programmi che rifiutano di accettare il file se un singolo record non supera alcune regole di convalida. In tal caso, avresti problemi a scrivere un record di descrizione dei campi di tipo stringa per tutti i campi numerici.

Non sono affatto un esperto, però, quindi sentiti libero di segnalare eventuali errori nella mia teoria.


2
Eppure, ho appena letto che non volevi personalizzare il processo di importazione. Mi dispiace per quello. Spero che qualcuno lo trovi utile, allora.
Tyler Mumford,

1
Buon post. Un altro motivo che mi viene in mente per cui potresti desiderare commenti è quello di aggiungere alcuni metadati sul file nel suo insieme. Aggiungere un'intera colonna o riga solo per una cella con queste informazioni sembra un po 'imbarazzante.
Ben Hershey,

3

Un file separato da virgola è in realtà solo un file di testo in cui le linee 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 è di solito Excel. Dovresti chiederti come Excel definisce un commento? In altre parole, cosa farebbe in modo che Excel ignorasse una linea (o parte di una linea) nel file CSV? Non sono a conoscenza di nulla che possa fare questo.


2
There is no standard which defines the contents of a CSV file Falso.
Qix - MONICA È STATA MISTREATA il

5
@Qix - dalla sezione 2 del documento di riferimento: "Mentre ci sono varie specifiche e implementazioni per il formato CSV (per es. [4], [5], [6] e [7]), non ci sono specifiche formali in esistenza "
Alien Technology,

3

Se stai analizzando il 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!

PRODUZIONE:

2, parse this line, yes it should!

4, parse this line, yes it should!

1
!! Sei il vero Ken Bob a piedi nudi?
Geoffrey Hale,

2

Se hai bisogno di qualcosa come:

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

Il tuo CSV può contenere le seguenti righe:

"#My comment, something else"
1,2

Presta molta attenzione alle "virgolette" nella prima riga.

Quando converti il ​​tuo testo in colonne usando la procedura guidata di Excel, ricorda di aver selezionato 'Tratta i delimitatori consecutivi come uno', impostandolo per usare 'virgolette' come delimitatore.

Pertanto, Excel dividerà il testo tra le virgole, mantenendo la riga 'comment' come valore a colonna singola (e rimuoverà le virgolette).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.