r24029 - spip/ecrire/inc

Author: booz@rezo.net
Date: 2018-08-01 14:52:38 +0200 (mer, 01 aoû 2018)
New Revision: 24029

Log:
On peut avoir un fichier séparé par des tabs qui inclue des champs textuels comprenant un grand nombre de virgules. Pour ne pas se tromper de séparateur, on divise le nb de virgules par 10 (au pif). On pourrait aussi décider de mettre if( > 0) peut-être...

Modified:
   spip/ecrire/inc/csv.php

Details: http://core.spip.org/projects/spip/repository/revisions/24029

Et réciproquement : on peut avoir un csv séparé par des virgules qui inclue des champs textuels comprenant un grand nombre de tabs. Et du coup ça va merder encore plus vite dans ce genre de cas.

Peut-être qu’une meilleure méthode serait de regarder le séparateur qui est bien présent sur toutes les lignes. Encore que ça peut merder si sur une ligne tu n’as que la première colonne.
Alors le séparateur qui est absent du moins de lignes possible ?

Ou dont l’écart-type de la distribution que forme le nombre d'occurence par ligne est le plus faible ?
(Ligne par ligne : tu compte le nombre de chaque séparateur, tu fais un tableau. Puis pour chaque tu calcule la moyenne puis la somme des carré (N-Nmoy). Celui qui est le plus faible est certainement le bon séparateur.
(Pour aller vite sur les gros fichiers on peut choisir de le faire sur maximum les 100?/1000? premières lignes ?)

Enfin bref, l’autodetection est forcément liée à une certaine marge d’erreur, le mieux serait de pouvoir expliciter le séparateur quand on le connait pour lever toute ambiguité possible

--
Cédric
Le 1 août 2018 à 14:52 +0200, booz@rezo.net, a écrit :

Author: booz@rezo.net
Date: 2018-08-01 14:52:38 +0200 (mer, 01 aoû 2018)
New Revision: 24029

Log:
On peut avoir un fichier séparé par des tabs qui inclue des champs textuels comprenant un grand nombre de virgules. Pour ne pas se tromper de séparateur, on divise le nb de virgules par 10 (au pif). On pourrait aussi décider de mettre if( > 0) peut-être...

Modified:
spip/ecrire/inc/csv.php

Details: http://core.spip.org/projects/spip/repository/revisions/24029

_______________________________________________
spip-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-commit
dev: http://trac.rezo.net/trac/spip/