Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
commit a671d5ce4d8c3eebcb8eef2127b1ceada8e07d4e parent f3e321808f94752ef209fd4c5a127e59cfdf2519 Auterice: Arthur Pons <arthur.pons@unistra.fr> Date: Wed, 24 Apr 2024 22:48:05 +0200 Fin article tsv ? Diffstat:
M | contents/amourtsv/index.sh | | | 53 | ++++++++++++++++++++++++++++++++++++++++++++++++----- |
1 file changed, 48 insertions(+), 5 deletions(-)
diff --git a/contents/amourtsv/index.sh b/contents/amourtsv/index.sh @@ -38,13 +38,13 @@ parsage en est tellement facilité qu'il est possible d'utiliser les coreutils[^2] pour les traiter. Pas besoin de logiciels spécifiques. D'ailleurs l'article d'origine précise au sujet de la simplicité du format CSV "Cela ne veut pas dire qu'il ne faut pas utiliser de parser dédié, vous allez -***nécessairement*** vous tromper." +***nécessairement*** vous tromper·" Le fait que le délimiteur soit une tabulation a un avantage supplémentaire aux virgules. La plupart des outils Unix délimitant des champs considérent par défaut les tabulations ou les blancs comme délimiteurs par défaut. Ainsi vous pourrez utiliser `< data.tsv cut -f2` sans avoir à spécifier le délimiteur ou, s'il n'y -a pasd e blancs dans les données `< data.tsv awk '{blabla}'`. C'est un petit +a pas de blancs dans les données `< data.tsv awk '{blabla}'`. C'est un petit confort assez anecdotique au premier abord mais qui sur le long terme est agréable si vous traitez souvent des données. @@ -57,7 +57,7 @@ Tout pareil que le CSV. Tout pareil. Un souci que l'on m'a déjà fait remonter est la difficulté de -lire du TSV par un.e humain.e puisque, par défaut, les tabulations s'affichent +lire du TSV par un·e humain·e puisque, par défaut, les tabulations s'affichent comme une suite d'espace dans la plupart des éditeurs de texte. Dans la plupart des bons éditeurs de texte il est possible de modifier l'apparence des caractères invisibles. Par exemple, pour vim, vous pouvez ajouter dans votre `.vimrc` : @@ -82,13 +82,56 @@ manière à ce que nos données s'affichent comme ceci : truc |machin |bidule blabla |bonjour bip |coucou -## TSV est streamable +## TSV est "streamable" Tout pareil. -Anecdote : +Anecdote : Au travail une personne souhaitait acheter un ordinateur très +puissant pour plus de 3000€ avec l'espoir qu'il puisse correctement ouvrir et +traiter des fichiers excel de plusieurs giga. Il avait déjà imaginé tout son +traitement en consultant le contenu d'un fichier pdf descriptif. Lorsqu'il a vu +le résultat de `head data.csv` dans un terminal il était extrêmement surpris. +Il n'avait pas auparavant conçu que l'on puisse ne lire que le début d'un +fichier texte sans tout charger en mémoire. Son expérience des tableurs et la +manière dont ils gèrent les les fichiers csv ou tsv lui faisait penser que des +fichiers de plusieurs giga nécessitaient forcément une grosse puissance. +Évidemment le traitement de plusieurs giga de données restera long et pourra +toujours être grandement accéléré par du meilleur matériel[^3] mais la quantité +de mémoire vive est une variable assez peu importante. + +## TSV est succint + +Pareil mais plus parce que l'on échappe rarement les champs avec des +apostrophes. + +## TSV à l'envers c'est toujours du TSV + +Pareil. Je n'avais jamais pensé à cela, c'est intéressant. + +## Excel déteste le TSV + +Il est vrai qu'excel prend ses aises avec les CSV et les TSV. Il mettra parfois +des virgules, parfois des points virgule, changera parfois l'encodage. Je ne sais +pas si les auteurs de l'article prennent excel comme exemple de tous les tableurs +mais je ne pense pas puisqu'il me semble que libreoffice calc respecte bien ces +formats là. + +##·Conclusion + +Faire du CSV plutôt que du TSV n'est pas grave mais je pense que c'est +préférable et que ça ne présente que des avantages. L'outillage nécessaire pour +les traiter, surtout pour des traitements simples, sera plus basique, plus +stable, moins spécifique. Les traitements seront plus rapides. Les fichiers un +peu plus légers[^4]. La lecture par des personnes est plus facile. + +Si vous êtes convaincu·es par ces arguments et souhaitez convertir des fichiers +CV existants en TSV je recommande le programme +[csv2tsv](https://github.com/eBay/tsv-utils?tab=readme-ov-file#csv2tsv). + [^1]: Tab-Separated Values (TSV). Les champs sont séparés par des tabulations. [^2]: cat, ls, cp, sort, uniq, grep etc. https://fr.wikipedia.org/wiki/GNU_Core_Utilities (ou autre variantes non GNU) +[^3]: quoi que cela dépend également de la complexité du traitement +[^4]: j'ai testé sur un fichier csv de 1Go avec quelques apostrophes par ligne, j'obtiens une économie d'environ 6% donc bon, à moins que le stockage soit un élément déterminant c'est presque négligeable.