Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2984 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Problème de split

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de split

n°2010118
Bassai
Posté le 19-07-2010 à 16:31:58  profilanswer
 

Hello,
 
j'ai un fichier .csv de la forme suivante
"...","...","...",...,...,"blablabla","bla_again"
 
Je dois organiser tout cela pour une base de donnée. Pour cela j'utilise la fonction split par rapport à la virgule pour mettre la première colonne du fichier dans la première colonne de la base donnée et ainsi de suite. Cela marche parfaitement.
Le hic intervient pour les 2 dernières colonnes: en effet dans le blablabla il y a des virgules, et donc dans l'avant dernière colonne de ma base de donné, je me retrouve avec une partie de blablabla, et dans la dernière avec une autre partie de blablabla ce qui ne correspond bien pas évidemment à ce que je veux ! (blablabla doit se retrouver dans l'avant dernière colonne de la base de donnée avec les virgules, et dans la dernière colonne je dois avoir bla_again)
 
Comment dois je procéder ?
 
merci

mood
Publicité
Posté le 19-07-2010 à 16:31:58  profilanswer
 

n°2010200
gilou
Modérateur
Modzilla
Posté le 19-07-2010 à 22:46:11  profilanswer
 

Si je comprends bien, tous tes champs sont entourés d'une double quote?
Dans ce cas la c'est simple: si un caractère comme ; ne figure pas dans tes champs, tu peux faire une substitution ligne à ligne:
$line =~ s/","/";"/g;
avant de splitter ta ligne sur ';' (ou d'utiliser le module Text::CSV pour parser la ligne)
 
Par contre, si il peut y avoir n'importe quel caractère (sauf la double quote) dans tes champs, même un ; c'est plus coton.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2010223
Bassai
Posté le 20-07-2010 à 08:56:24  profilanswer
 

Bonjour,
 
j'ai réussi à m'en sortir finalement avec:
 
  use Text::ParseWords;
 @new = quotewords(",", 0, $text);
 
Merci ;-)

n°2010231
gilou
Modérateur
Modzilla
Posté le 20-07-2010 à 09:30:18  profilanswer
 

Oulah!, j'étais endormi moi hier soir, je me suis pas souvenu que split prenait une regex en paramètre.
Il suffisait de faire
my @columns = split /^"|","|"$/, $line;
shift @columns;   (pour virer le premier champ, vide)
Et ça donne les champs (sans leur double quote autour) dans l'array.
 
Mais ce que tu as fait est bien aussi. C'est un module que je n'avais pas encore employé, je le connaitrais dorénavant.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Problème de split

 

Sujets relatifs
Problème avec splitparseur php avec @implode, preg_split . Probleme pour adapter le code
Problème avec Split VBA ACCESSPerl et cgi: problème de split
Problème pour utiliser la fonction splitprobleme de split d'une variable
Probleme Recuperation donnees Textarea d'un formulaire avec splitProblème avec split et tableau [résolu]
[Java] Probleme avec "\n" lors d'un String.split(";")Probleme awk & split
Plus de sujets relatifs à : Problème de split


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR