CSV : comma separated values

02 June 2014
— fr 
 

J’ai récemment eu besoin de transmettre des données à des collègues pour qu’ils les complètent et me fournissent le résultat. Comme il s’agissait de tableaux, j’ai pensé à utiliser un format utilisé par les tableurs (Microsoft Excel, LibreOffice Calc, Gnumeric…). Comme il n’y avait aucune formule, il n’était pas besoin d’un format compliqué comme ods ou xlsx. J’ai donc choisi csv.

CSV signifie comma-separated values. En français, ça veut dire valeurs séparées par des virgules. Cela signifie que ce sont des fichiers textes dans lesquels les , séparent les différentes colonnes. Comme on peut avoir envie d’avoir des , dans certaines cases, il y a des règles pour les protéger de même que quelques autres caractères. Évidemment, la virgule pose un petit problème puisqu’on l’utilise pour séparer la partie décimale des nombres en français, d’où une petite gymnastique quand on veut stocker des données numériques.

J’ai eu la surprise de recevoir des fichiers dans des formes presque aussi nombreuses que le nombre de personnes qui m’ont répondu : j’ai reçu un fichier xls, des fichiers csv avec des passages à la ligne windows, mac ou unix, des fichiers où les accents étaient codés en latin1, en utf-8 ou en mac. Mais ça, je m’y attendais. Ce à quoi je ne m’attendais pas, c’était à recevoir des fichiers csv dont le séparateur était le ; mais qui contenaient toujours les , que j’avais mis.

Les versions françaises d’excel, quand on leur fournit un fichier csv, croient que le c est celui de point-virgule. Hé oui, si on fait un fichier csv avec une version anglaise d’excel, il perdra toutes ses cases à l’ouverture dans la version française… Et inversement !

Pour la prochaine fois, j’hésite donc entre passer au tsv (Tab Separated Values) mais je pressens d’autres problèmes, utiliser des fichiers xls ou faire une petite application web dont l’unique objet serait d’afficher un fichier csv et donner la possibilité de le modifier, m’assurant l’uniformité entre les différents utilisateurs.

En conclusion, csv n’est pas un bon format d’échange. Les autres possibilités ne sont malheureusement guère satisfaisantes puisque quelque chose comme json est redondant, hdf5 n’est pas lisible par n’importe qui. Il n’y a que des mauvaises solutions.