Quelles sont les métadonnées "sep =" que vous pouvez ajouter aux CSV?

Tout en essayant de savoir comment obtenir CSVs pour s'ouvrir correctement dans Excel sur un ordinateur espagnol (appartenant à un client), j'ai trouvé de nombreuses réponses recommandant l'utilisation de sep=, en haut du fichier:

  • Le moyen le plus simple d'ouvrir CSV avec des virgules dans Excel
  • Comment contrôler l'importation CSV dans Excel 2010
  • Comment ouvrir des fichiers CSV délimités par un point-virgule dans la version américaine d'Excel
  • L'espace ou les onglets comme séparateur dans CSV
  • Comment faire pour que Excel interprète la virgule comme un délimiteur par défaut dans les fichiers CSV?

En face, cette approche fonctionne, mais aucune de ces réponses donne des informations supplémentaires sur l'origine de cette option de métadonnées. J'ai essayé de rechercher ce que cela signifie (et donc trouvé toutes ces réponses), mais j'ai été incapable d'obtenir d'autres informations, étant donné que la ponctuation est notoirement difficile à rechercher.

Mon principale préoccupation est de savoir si cette fonctionnalité est spécifique à Excel . Je le soupçonne, mais je n'ai trouvé rien de définitif pour le confirmer.

Certaines questions connexes sont les suivantes:

  • Quels caractères peuvent être utilisés dans ce paramètre?
  • Quels autres paramètres sont disponibles (p. Ex., Caractère de terminaison de ligne, caractère de citation, etc.).
  • Y a-t-il d'autres outils qui supportent officiellement cette fonctionnalité?

J'espère qu'il y a une documentation quelque part que quelqu'un peut me signaler afin de répondre à toutes ces questions et plus encore; Je n'ai tout simplement pas pu le trouver.

Quelques éclaircissements:

Le sep= n'est pas un paramètre pour un analyseur. Il doit être placé à l' intérieur du CSV. Exemple:

 sep=| "LETTER"|"ANIMAL" "a"|"aardvark" "b"|"bear" "c"|"cow" 

RFC 4180 est communément reconnu comme la norme pour le format CSV, et ne mentionne aucune de ces fonctionnalités.

Le modèle W3C pour les données tabulaires et les métadonnées sur le Web le mentionne comme une caractéristique qui ne relève pas de leur portée:

De nombreux fichiers "CSV" intègrent des métadonnées, par exemple dans des lignes avant la ligne d'en-tête du document CSV. Cette spécification ne définit aucun format pour incorporer des métadonnées dans des fichiers CSV, en dehors des noms de colonnes dans la ligne d'en-tête.

Donc, alors que je ne trouvais aucune preuve directe que cette fonctionnalité soit spécifique à Excel, cela semble toujours être le cas car il ne semble pas y avoir de document de normalisation couvrant cette fonctionnalité.

À peu près tout outil pouvant être importé à partir de fichiers .csv reconnaît que la virgule n'est pas le seul séparateur possible, les onglets ont été communs depuis longtemps. Je pense que cela remonte aux jours des cartes perforées, même s'il doit y avoir un caractère reconnu comme domaine de fin de données – à l'exception des systèmes qui utilisent des champs de largeur fixe ou des champs préfixés en longueur, tout ce dont le système a besoin Depuis l'avènement des ordinateurs.

Les 3 éléments essentiels sont un séparateur de champ, un séparateur d'enregistrement et un marqueur de fin de données, csv utilise par défaut des virgules, une nouvelle ligne et une fin de fichier, mais n'importe quelle entrée valide peut être utilisée, mais vous avez besoin d'un mécanisme Pour échapper aux marqueurs spéciaux s'ils se produisent dans vos données valides.

Un système historique que j'ai rencontré a utilisé la nouvelle ligne pour la fin du champ, 2 lignes vierges pour la fin de l'enregistrement et *!*!* END *!*!* Pour la fin des données. J'ai généralement rencontré tout ,\t|: utilisé comme séparateur de champ avec différents caractères de contrôle.

Une chose à se méfier est que les Français et d'autres utilisent la virgule comme une décimale – cela peut causer toutes sortes d'amusement et de jeux. Il existe un degré de standardisation pour les fichiers csv dans rfc4180, mais il est parfois temps de modifier manuellement les fichiers lors de l'exportation d'un programme et d'importer vers un autre.

Pour répondre à la deuxième partie de votre question, Python, par exemple, comprend un lecteur / ecriveur csv comme une des bibliothèques standard qui offre les options suivantes:

  • delimiter – C'est le séparateur de champ, (sauf échappé).
  • doublequotedoublequote – Si vrai alors, " dans un champ sera représenté comme ""
  • escapechar – supprime toute signification particulière à partir de n'importe quel caractère suivant, par exemple s'il est défini sur \ then quote peut être représenté comme \"
  • lineterminator – habituellement un de \n , \r , \r\n ou \n\r
  • quotechar – caractère utilisé pour quotechar chaînes, généralement " ou '
  • quoting – drapeau comme l'un des:
    • ALL – Chaque champ est entre guillemets, c'est-à-dire: "1","Free Beer","ASAP"
    • MINIMALMINIMAL seulement les champs qui ont des caractères spéciaux, à savoir: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC – Cite tout ce qui n'est pas un nombre, c'est-à-dire: 1,"Beer, (Free)", "Now", "Please"
    • NONE – Ne citez pas l'échappatoire, c'est-à-dire: 1,Beer\, (Free), Now, Please
  • skipinitialspace – sautez n'importe quel espace de tête de chaque champ afin que vous puissiez utiliser , plutôt que simplement , un séparateur de champ.

Généralement, l'outil plus flexible et bien pensé qui peut importer des fichiers csv est le plus de ces options (éventuellement avec différents noms et / ou mécanismes), qu'il aura.

Pour contribuer à une réponse à l'une de vos questions: "Existe-t-il d'autres outils qui supportent officiellement cette fonctionnalité?"

Ceci n'est pas pris en charge par Apple Numbers (j'ai testé en utilisant la version 3.6.2 de Numbers).

Il n'est pas non plus pris en charge par csv2json ( https://www.npmjs.com/package/csv2json ) ni csvtojson ( https://www.npmjs.com/package/csvtojson ).