Le mardi 13 octobre 2009 16:04:20, Fabien Jakimowicz a écrit :
> 2009/10/13 Loïc Guitaut <[email protected]>:
> > Salut à tous !
> >
> > j'ai un petit soucis avec un csv malformé et je commence à m'arracher les
> > cheveux, donc je viens vous demander votre avis.
> >
> > J'ai des lignes de ce type là :
> >
> > blablabla, plop, "une jolie, description", 12, , , 5
> >
> > Forcément quand je mets ça dans fastercsv ou équivalent, ça explose. J'ai
> > donc cherché du côté des regexp, mais j'ai rien trouvé qui m'aide
> > vraiment. J'ai fait tout un tas d'essais mais n'étant pas un gourou à ce
> > niveau là, je n'arrive pas à grand chose :/
> >
> > Si quelqu'un a une solution pour soit splitter la ligne correctement ou
> > simplement la "normaliser" pour que ça passe dans un parser CSV, ça
> > serait vraiment cool !
> 
> Il s'agit pourtant là d'une chaine correctement formée : une champ
> d'une entrée CSV (une cellule donc) peut contenir des virgules (le
> séparateur) voir même des sauts de ligne. Il convient alors d'isoler
> la cellule entre guillemets.
> 

Ben de ce que j'en avais compris, il fallait tout délimiter avec des 
guillemets. En tout cas les parsers CSV que j'ai tester fonctionnent tous 
comme ça.

Mais bon c'est pas très grave, juste après avoir posé la question, j'ai trouvé 
la regexp magique grâce à mon ami google :) (pourtant c'est pas faut d'avoir 
cherché)

Pour info, avec ça, ça marche :
/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/

Et voilà !
-- 
  ,= ,-_-. =.   Loïc Guitaut
 ((_/)o o(\_))  http://www.belfalas.org
  `-'(. .)`-'   Jabber ID : [email protected]
      \_/       GnuPG KeyID : 0xA78CD85D

Attachment: signature.asc
Description: This is a digitally signed message part.

Répondre à