Un fichier CSV peut-il avoir un commentaire?

203

Existe-t-il un moyen officiel d'autoriser un fichier au format CSV à autoriser les commentaires, soit sur sa propre ligne OU à la fin d'une ligne?

J'ai essayé de vérifier Wikipédia à ce sujet et également la RFC 4180, mais les deux ne mentionnent rien qui me porte à croire que cela ne fait pas partie du format de fichier, donc ce n'est pas de chance pour moi et je devrais alors utiliser un fichier séparé ReadMe.txt pour expliquer le fichier.

Enfin, je sais qu'il est facile pour moi d'ajouter mes propres commentaires, mais j'espérais que quelque chose comme Excel pourrait simplement l'importer immédiatement sans qu'un consommateur ait à personnaliser le processus d'importation.

Alors, des pensées?

Pure.Krome
la source
1
Sur quoi voudriez-vous commenter? Les valeurs de chaque ligne ou le fichier lui-même? Le fichier XML est-il une alternative pour vous?
Square Rig Master
3
La préposition a été abattue pour Python .
new123456
2
Peut-être une chaîne de version pour les données @SquareRigMaster. Tout comme j'essaie de le faire maintenant?
Rob Wells
@SquareRigMaster - Ou une déclaration de copyright.
Richard Smith

Réponses:

116

La "norme" CSV (telle qu'elle est) ne dicte pas comment les commentaires doivent être traités, non, c'est à l'application d'établir une convention et de s'y tenir.

skaffman
la source
23
RFC 4180 est désormais la norme.
vipw
34
La RFC 4180 n'est pas une norme, rfc4180 dit: "Ce mémo fournit des informations à la communauté Internet. Il ne spécifie aucun standard Internet d'aucune sorte. La distribution de ce mémo est illimitée."
Paul Weibert
14
OK, peut-on dire que c'est une norme de facto?
Marco Sulla
1
Tous les RFC sont des mémos qui ne sont pas destinés à fournir une norme Internet AFAIK
usr-local-ΕΨΗΕΛΩΝ
5
Yah ... ce n'est pas vrai. Il existe des documents de suivi normalisés et des documents de suivi non standard (informatifs). L'ensemble du processus, y compris les descriptions, les processus et les règles pour les documents émis par l'IETF est défini par la RFC2026 avec quelques modifications ultérieures. Chaque RFC spécifiera au début sur quelle piste il se trouve.
Steve Hole
31

Dans les données d'ingénierie, il est courant de voir le #symbole dans la première colonne utilisé pour signaler un commentaire.

J'utilise la bibliothèque d'analyse ostermiller CSV pour lire et traiter ces fichiers. Cette bibliothèque vous permet de définir le caractère de commentaire. Après l'opération d'analyse, vous obtenez un tableau contenant uniquement les données réelles, aucun commentaire.

Pedro_Uno
la source
30

Non, CSV ne spécifie aucun moyen de baliser les commentaires - ils seront simplement chargés par des programmes comme Excel en tant que cellules supplémentaires contenant du texte.

Le plus proche que vous pouvez gérer (avec CSV importé dans une application spécifique telle qu'Excel) est de définir une manière spéciale de baliser les commentaires qu'Excel ignorera. Pour Excel, vous pouvez «masquer» le commentaire (dans une certaine mesure) en l'incorporant dans une formule. Par exemple, essayez d'importer le fichier csv suivant dans Excel:

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

Vous vous retrouvez toujours avec une cellule dans la feuille de calcul qui affiche le numéro 0, mais le commentaire est masqué.

Alternativement, vous pouvez masquer le texte en le complétant simplement avec des espaces afin qu'il ne s'affiche pas dans la partie visible de la cellule:

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

Notez que vous devez suivre le texte du commentaire avec une virgule pour qu'Excel remplisse la cellule suivante et masque ainsi toute partie du texte qui ne tient pas dans la cellule.

Des hacks désagréables, qui ne fonctionneront qu'avec Excel, mais ils peuvent suffire à rendre votre sortie un peu plus ordonnée après l'importation.

Jason Williams
la source
6

Je pense que la meilleure façon d'ajouter des commentaires à un fichier CSV serait d'ajouter un champ "Commentaires" ou d'enregistrer directement dans les données.

La plupart des applications d'analyse CSV que j'ai utilisées implémentent à la fois le mappage de champ et le choix d'enregistrement. Donc, pour commenter les propriétés d'un champ, ajoutez un enregistrement juste pour les descriptions de champ. Pour commenter un enregistrement, ajoutez un champ à la fin de celui-ci (enfin, tous les enregistrements, vraiment) juste pour les commentaires.

Ce sont les deux seules raisons auxquelles je peux penser pour commenter un fichier CSV. Mais le seul problème que je peux prévoir serait les programmes qui refusent d'accepter le fichier du tout si un seul enregistrement ne passe pas certaines règles de validation. Dans ce cas, vous auriez du mal à écrire un enregistrement de description de champ de type chaîne pour tous les champs numériques.

Je ne suis en aucun cas un expert, alors n'hésitez pas à signaler toute erreur dans ma théorie.

Tyler Mumford
la source
2
Aaand, je viens de lire que vous ne vouliez pas personnaliser le processus d'importation. Désolé pour ça. J'espère que quelqu'un trouvera cela utile, alors.
Tyler Mumford
1
Bon post. Une autre raison pour laquelle je peux penser pourquoi vous pourriez souhaiter des commentaires est d'ajouter des métadonnées sur le fichier dans son ensemble. Ajouter une colonne ou une ligne entière juste pour une cellule avec cette information, cela semble un peu gênant.
Ben Hershey
3

Un fichier séparé par des virgules n'est en réalité qu'un fichier texte dont les lignes sont constituées de valeurs séparées par des virgules.

Il n'y a pas de norme qui définit le contenu d'un fichier CSV, il n'y a donc pas de manière définie d'indiquer un commentaire. Cela dépend du programme qui importera le fichier CSV.

Bien sûr, c'est généralement Excel. Vous devez vous demander comment Excel définit un commentaire? En d'autres termes, qu'est-ce qui inciterait Excel à ignorer une ligne (ou une partie de ligne) dans le fichier CSV? Je ne suis au courant de rien qui pourrait faire cela.

pavium
la source
2
There is no standard which defines the contents of a CSV file Faux.
Qix - MONICA A ÉTÉ BRUÉE
5
@Qix - extrait de la section 2 du document référencé: "Bien qu'il existe diverses spécifications et implémentations pour le format CSV (par exemple [4], [5], [6] et [7]), il n'y a pas de spécification formelle dans existence "
Alien Technology
3

Si vous analysez le fichier avec une commande FOR dans un fichier batch, un point-virgule fonctionne (;)

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!

PRODUCTION:

2, parse this line, yes it should!

4, parse this line, yes it should!
Ken Bob Saxton
la source
1
!! Êtes-vous le vrai Ken Barefoot Barefoot?
Geoffrey Hale
2

Si vous avez besoin de quelque chose comme:

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

Votre CSV peut contenir les lignes suivantes:

"#My comment, something else"
1,2

Faites très attention aux «guillemets» de la première ligne.

Lorsque vous convertissez votre texte en colonnes à l'aide de l'assistant Excel, n'oubliez pas de cocher la case "Traiter les délimiteurs consécutifs comme un seul", en le configurant pour utiliser "guillemets" comme délimiteur.

Ainsi, Excel fractionnera le texte au niveau des virgules, en conservant la ligne «commentaire» comme une valeur de colonne unique (et il supprimera les guillemets).

Rogerio Granato
la source