J'ai un programme qui produit une table et je me demandais s'il y avait des avantages/inconvénients entre les formats csv et tsv.
TSV est très efficace pour Javascript/Perl/Python à traiter, sans perdre aucune information de frappe, et aussi facile à lire pour les humains.
Le format est pris en charge dans 4store depuis sa sortie publique, et il est raisonnablement largement utilisé.
La façon dont je le vois est la suivante: CSV est pour le chargement dans des feuilles de calcul, TSV est pour le traitement par un logiciel sur mesure.
Vous pouvez voir ici les spécifications techniques de chacun ici.
Le choix dépend de l'application. En un mot, si vos champs ne contiennent pas de virgules, utilisez CSV; sinon TSV est la voie à suivre.
TL; DR
Dans les deux formats, le problème se pose lorsque le délimiteur peut apparaître dans les champs, il est donc nécessaire d'indiquer que le délimiteur ne fonctionne pas comme séparateur de champ mais comme valeur dans le champ, ce qui peut être quelque peu douloureux.
Par exemple, en utilisant CSV: Kalman, Rudolf
, von Neumann, John
, Gabor, Dennis
Certaines approches de base sont:
Supprimez tous les délimiteurs qui apparaissent dans le champ.
Par exemple. Kalman Rudolf
, von Neumann John
, Gabor Dennis
Échapper le caractère (généralement avant d'ajouter une barre oblique inverse \
).
Par exemple. Kalman\, Rudolf
, von Neumann\, John
, Gabor\, Dennis
Entourez chaque champ d'un autre caractère (généralement des guillemets doubles "
).
Par exemple. "Kalman, Rudolf"
, "von Neumann, John"
, "Gabor, Dennis"
Les champs sont séparés par une virgule ,
.
Par exemple:
Name,Score,Country
Peter,156,GB
Piero,89,IT
Pedro,31415,ES
Avantages:
Désavantages:
Les champs sont séparés par une tabulation <TAB>
ou \t
Par exemple:
Name<TAB>Score<TAB>Country
Peter<TAB>156<TAB>GB
Piero<TAB>89<TAB>IT
Pedro<TAB>31415<TAB>ES
Avantages:
Désavantages:
Vous pouvez utiliser le délimiteur de votre choix, mais les onglets et les virgules sont pris en charge par de nombreuses applications, notamment Excel, MySQL, PostgreSQL. Les virgules sont courantes dans les champs de texte, donc si vous les échappez, plusieurs d'entre elles doivent être échappées. Si vous n'y échappez pas et que vos champs peuvent contenir des virgules, vous ne pouvez pas exécuter en toute confiance "sort -k2,4" sur votre fichier. Vous devrez peut-être quand même échapper certains caractères dans les champs (octets nuls, sauts de ligne, etc.). Pour ces raisons et plus encore, ma préférence est d'utiliser les TSV et les tabulations d'échappement, les octets nuls et les sauts de ligne dans les champs. De plus, il est généralement plus facile de travailler avec des TSV. Il suffit de diviser chaque ligne par le délimiteur de tabulation. Avec les CSV, il y a des champs entre guillemets, éventuellement des champs avec des retours à la ligne, etc. J'utilise des CSV uniquement lorsque je suis obligé de le faire.
Je pense que généralement csv, sont pris en charge plus souvent que le format tsv.