En essayant de savoir comment faire pour ouvrir correctement les CSV dans Excel sur un PC espagnol (appartenant à un client), j'ai trouvé de nombreuses réponses recommandant d'utiliser sep=,
en haut du fichier:
- 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 des points-virgules dans la version américaine d'Excel
- Espace ou tabulations comme séparateur dans CSV
- Comment obtenir d'Excel pour interpréter la virgule comme un délimiteur par défaut dans les fichiers CSV?
Sur la face de celui - ci, cette approche fonctionne , mais aucune de ces réponses donnent de plus amples informations sur où cette option de métadonnées vient. J'ai essayé de chercher ce que cela signifie (et j'ai donc trouvé toutes ces réponses) mais je n'ai pas pu obtenir d'autres informations, d'autant plus que la ponctuation est notoirement difficile à rechercher.
Ma principale préoccupation est de savoir s'il s'agit ou non d'une fonctionnalité spécifique à Excel . Je le soupçonne, mais je n'ai rien trouvé de définitif pour le confirmer.
Certaines questions connexes sont:
- Quels caractères peuvent être utilisés dans ce paramètre?
- Quels autres paramètres sont disponibles (par exemple, caractère de terminaison de ligne, caractère de guillemet, etc.).
- Existe-t-il d'autres outils qui prennent officiellement en charge cette fonctionnalité?
J'espère qu'il y a quelque part une documentation sur laquelle quelqu'un peut me diriger et qui répondra à toutes ces questions et plus encore; Je n'ai tout simplement pas pu le trouver.
Quelques précisions:
Ce sep=
n'est pas un paramètre pour un analyseur. Il est destiné à être placé à l' intérieur du CSV. Exemple:
sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"
la source
Réponses:
La RFC 4180 est généralement reconnue 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 fonctionnalité hors de leur portée:
Donc, même si je n'ai trouvé aucune preuve directe que cette fonctionnalité est spécifique à Excel, c'est apparemment toujours le cas car il ne semble y avoir aucun document de normalisation couvrant cette fonctionnalité.
la source
Pour contribuer à une réponse à l'une de vos questions: "Existe-t-il d'autres outils qui prennent officiellement en charge cette fonctionnalité?"
Ceci n'est pas pris en charge par Apple Numbers (j'ai testé en utilisant Numbers version 3.6.2).
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 ).
la source
L'instruction sep = est utilisée dans tous les pays où la virgule est utilisée comme délimiteur décimal, comme l'Italie. Comme Excel exporte CSV en utilisant des points-virgules au lieu de virgules dans ces pays, si vous voulez être sûr que le fichier peut être lu aux États-Unis ou dans d'autres pays, vous avez BESOIN
sep =;
en haut du fichier. Ceci est spécifique à Excel et peut être ignoré par d'autres applications.
la source
À peu près n'importe quel outil pouvant importer à partir de fichiers .csv reconnaît que la virgule n'est pas le seul séparateur possible, les tabulations sont courantes depuis longtemps par exemple. Je pense que cela remonte même à l'époque des cartes perforées, qu'il doit y avoir un caractère reconnu comme fin de champ de données - à l'exception des systèmes qui utilisent des champs à largeur fixe ou des champs à préfixe de longueur à peu près tous les systèmes en ont besoin depuis l'avènement des ordinateurs.
Les 3 éléments essentiels sont un séparateur de champs, un séparateur d'enregistrements et un marqueur de fin de données, csv utilise par défaut des virgules, des sauts de ligne et des fins de fichier pour ceux-ci, mais à peu près n'importe quelle entrée valide peut être utilisée, vous avez cependant 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é utilisait une nouvelle ligne pour la fin du champ, 2 lignes vides pour la fin de l'enregistrement et
*!*!* END *!*!*
pour la fin des données. Je suis souvent tombé sur tout,\t|:
utilisé comme séparateur de champ avec divers caractères de contrôle.Une chose à se méfier est que les Français et d'autres utilisent la virgule comme point décimal - cela peut provoquer toutes sortes d'amusements et de jeux. Il y a un certain degré de standardisation pour les fichiers csv dans rfc4180 mais il y a des moments où vous devez modifier manuellement les fichiers lors de l'exportation d'un programme et de l'importation vers un autre.
Pour répondre à la deuxième partie de votre question, Python, par exemple, inclut un lecteur / enregistreur csv comme l'une des bibliothèques standard offrant les options suivantes:
delimiter
- Il s'agit du séparateur de champ (sauf s'il est échappé).doublequote
- Si vrai, un"
dans un champ sera représenté comme""
escapechar
- supprime toute signification spéciale de tout caractère suivant, par exemple s'il est défini sur\
alors, quote peut être représenté comme\"
lineterminator
- généralement l' un des\n
,\r
,\r\n
ou\n\r
quotechar
- caractère utilisé pour citer des 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"
MINIMAL
- Ne citer que les champs qui ont des caractères spéciaux, à savoir:1,"Beer, (Free)", Now, Please
QUOTE_NONNUMERIC
- Citez tout ce qui n'est pas un nombre, c'est-à-dire:1,"Beer, (Free)", "Now", "Please"
NONE
- Ne citez pas escape à la place, c'est-à-dire:1,Beer\, (Free), Now, Please
skipinitialspace
- sautez tout espace de tête de chaque champ afin de pouvoir l'utiliser,
plutôt que simplement,
comme séparateur de champ.Généralement, un outil plus flexible et bien pensé qui peut importer des fichiers csv est le plus de ces options, (éventuellement avec des noms et / ou des mécanismes différents), qu'il aura.
la source
sep=
n'est pas un paramètre pour un analyseur. J'ai ajouté quelques éclaircissements à ma question.sep=
c'est et d'où ça vient.