web-dev-qa-db-fra.com

Choisir entre tsv et csv

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.

34
PKompella

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.

45
James

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"

CSV

Les champs sont séparés par une virgule ,.

Par exemple:

Name,Score,Country
Peter,156,GB
Piero,89,IT
Pedro,31415,ES

Avantages:

  • Il est plus générique et utile lors du partage avec des personnes non techniques, car la plupart des logiciels peuvent le lire sans jouer avec les paramètres.

Désavantages:

  • Échapper à la virgule dans les champs peut être frustrant car tout le monde ne suit pas les normes.
  • Tous les caractères et guillemets d'échappement supplémentaires ajoutent du poids à la taille finale du fichier.

TSV

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:

  • Il n'est pas nécessaire d'échapper au délimiteur car il n'est pas habituel d'avoir le caractère tab dans un champ. Sinon, il doit être supprimé.

Désavantages:

  • Elle est moins répandue.
20
tashuhka

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.

3
Ben

Je pense que généralement csv, sont pris en charge plus souvent que le format tsv.

1
Julio Diaz