[RESOLU] Parsing de CSV avec Text::CSV_XC ou à l'arrache

Parsing de CSV avec Text::CSV_XC ou à l'arrache [RESOLU] - Perl - Programmation

Marsh Posté le 03-12-2008 à 17:09:24    

Bonjour,
 
J'ai besoin pour une application d'un script qui va parser un fichier de données CSV.
 
Ce CSV est formaté de la manière suivante : tabulation "\t" comme séparateur de champs, saut de ligne "\n" comme séparateur d'enregistrement.
Certain champs sont complexes et peuvent contenir du HTML et donc des sauts de lignes.
 
Je pensais qu'en spécifiant le caractère de quote " le parseur comprendrait que si un saut de ligne etait compris dans un interval de quotes alors il ne s'agissait pas du caractère de fin d'enregistrement mais d'un saut de ligne de la valeur en cours, mais il n'en est rien...
 
Avez vous déjà rencontré ce problème et si oui auriez vous trouvé une solution ?
 
Merci d'avance.
Yellu


Message édité par yellu le 03-12-2008 à 18:07:20
Reply

Marsh Posté le 03-12-2008 à 17:09:24   

Reply

Marsh Posté le 03-12-2008 à 17:30:09    

Quel langage tu utilise pour parser ton fichier CSV ?
Si c'est du script, quel interpréteur ?


---------------
By bob.
Reply

Marsh Posté le 03-12-2008 à 17:39:30    

J'utilise un script Perl avec le module Text::CSV_XS

Reply

Marsh Posté le 03-12-2008 à 18:01:26    

As-tu essayé l'attribut verbatim de CSV_XS ?
 

Citation :

verbatim
The basic thought behind this is to tell the parser that the normally special characters newline (NL) and Carriage Return (CR) will not be special when this flag is set, and be dealt with as being ordinary binary characters. This will ease working with data with embedded newlines.
 
http://search.cpan.org/~hmbrand/Te [...] ew_(%attr)

;)
 
Par exemple :

Code :
  1. $csv = Text::CSV_XS->new ({
  2.      quote_char          => '"',
  3.      escape_char         => '"',
  4.      sep_char            => '\t',
  5.      eol                 => '\n',
  6.      always_quote        => 0,
  7.      binary              => 0,
  8.      keep_meta_info      => 0,
  9.      allow_loose_quotes  => 0,
  10.      allow_loose_escapes => 0,
  11.      allow_whitespace    => 0,
  12.      blank_is_undef      => 0,
  13.      verbatim            => 1,
  14.      });


---------------
By bob.
Reply

Marsh Posté le 03-12-2008 à 18:06:59    

Merci mais cela ne fonctionne pas avec verbatim en revanche j'ai réussi avec binary => 1.
 
Merci à toi :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed