Existe-t-il un moyen officiel d’autoriser un fichier au format CSV à autoriser les commentaires, soit sur sa propre ligne, soit à la fin d’une ligne?
J’ai essayé de vérifier wikipedia sur ceci et aussi RFC 4180 mais les deux ne mentionnent rien qui m’amène à croire qu’il ne fait pas partie du format de fichier donc c’est la malchance et je devrais alors utiliser un fichier séparé fichier.
Enfin, je sais que c’est facile pour moi d’append mes propres commentaires, mais j’espérais que quelque chose comme Excel pourrait l’importer directement sans que le consommateur ait à personnaliser le processus d’importation.
Donc, les pensées?
Le “standard” CSV (tel qu’il 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.
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 (CSV étant importé dans une application spécifique telle qu’Excel) consiste à définir un moyen spécial de baliser les commentaires qu’Excel ignore. Pour Excel, vous pouvez “masquer” le commentaire (dans une certaine mesure) en l’intégrant 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 nombre 0, mais le commentaire est masqué.
Vous pouvez également masquer le texte en le remplissant simplement par 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 rentre pas dans la cellule.
Les hackers méchants, qui ne fonctionneront qu’avec Excel, mais ils peuvent suffire à rendre votre sortie un peu plus nette après l’importation.
Dans les données d’ingénierie, il est courant de voir le symbole #
dans la première colonne pour signaler un commentaire.
J’utilise la bibliothèque d’parsing 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’parsing, vous obtenez un tableau contenant uniquement les données réelles, aucun commentaire.
Je pense que le meilleur moyen d’append des commentaires à un fichier CSV serait d’append un champ “Commentaires” ou d’enregistrer directement dans les données.
La plupart des applications d’parsing CSV que j’ai utilisées implémentent à la fois le mappage des champs et le choix des enregistrements. Donc, pour commenter les propriétés d’un champ, ajoutez un enregistrement uniquement pour les descriptions de champs. 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 puisse prévoir, ce sont les programmes qui refusent d’accepter le fichier si un seul enregistrement ne respecte 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 les champs numériques.
Je ne suis en aucun cas un expert, alors n’hésitez pas à signaler toute erreur dans ma théorie.
Un fichier séparé par des virgules n’est en réalité qu’un fichier texte où 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 moyen défini d’indiquer un commentaire. Cela dépend du programme qui importera le fichier CSV.
Bien sûr, il s’agit généralement d’Excel. Vous devriez vous demander comment Excel définit un commentaire? En d’autres termes, qu’est-ce qui ferait qu’Excel ignore une ligne (ou une partie d’une ligne) dans le fichier CSV? Je ne suis au courant de rien qui ferait cela.
Si vous parsingz le fichier avec une commande FOR dans un fichier de commandes, 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!
SORTIE:
2, parse this line, yes it should! 4, parse this line, yes it should!
Si vous avez besoin de quelque chose comme:
│ A │ B ──┼────────────────────────────────┼─── 1 │ #My comment, something else │ 2 │ 1 │ 2
Votre fichier CSV peut contenir les lignes suivantes:
"#My comment, something else" 1,2
Portez une attention particulière aux «citations» 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 définissant comme “délimiteur”.
Ainsi, Excel divisera le texte par des virgules, en conservant la ligne “commentaire” comme une seule valeur de colonne (et il supprimera les guillemets).