IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Conversion d'un tableau .csv en tableau perl


Sujet :

Modules Perl

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut Conversion d'un tableau .csv en tableau perl
    Bonjour,
    Je cherche a convertir un tableau .csv en tableau Perl.
    Je debute en Perl, et pr le moment je n'ai pas reussi a convertir ttes les lignes du .csv en un tableau a plusieurs lignes et plusieurs colonnes. Je n'arrive qu'a generer une liste ne tenant pas compte des retours a la ligne.

    Le fichier .csv se presente comme suit :

    Name,Frequency,,,,,Group,R/F,Invert,DC,MR,Mem
    ,OPP1,OPP2,OPP3,OPP4,OPP5,,,,,,
    3D,300,300,300,,,A,R,NO,NO,NO,NO

    et ainsi de suite.
    Comment puis-je le convertir en un tableau Perl que je pourrais manipuler simplement avec les commandes @array[][]???

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Le CPAN, que du bonheur :
    Tie::CVS_File (exactement ce que tu demandes: tableau de tableau)
    Text::CVS (le générique)
    Tie::Handle::CVS (accès aux champs par un hash, enregistrement par enregistrement)

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Merci pour l'info sur le CPAn mais il subsiste un probleme, je n'arrive pas a installer le module, l'erreur suivante s'affiche :

    % perl Makefile.PL
    Perl 5.006 required--this is only version 5.00503, stopped at Makefile.PL line 3.
    BEGIN failed--compilation aborted at Makefile.PL line 3.

    Comment puis-je installer le module qui m'interesse?

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par roulia_rousset Voir le message
    Merci pour l'info sur le CPAn mais il subsiste un probleme, je n'arrive pas a installer le module, l'erreur suivante s'affiche :

    % perl Makefile.PL
    Perl 5.006 required--this is only version 5.00503, stopped at Makefile.PL line 3.
    BEGIN failed--compilation aborted at Makefile.PL line 3.

    Comment puis-je installer le module qui m'interesse?
    L'erreur me semble pourtant assez explicite : ton Perl est trop vieux (il a environ 8 ans, la première version de Perl5.6 est sortie il y a 7 ans), soit tu en changes, soit tu recodes une partie du module, soit tu choisis un autre module.

    --
    Jedaï

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Ok, j'avais compris l'erreur...mais comment modifier ds ce cas le code du module pr pouvoir l'installer???

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par roulia_rousset Voir le message
    Ok, j'avais compris l'erreur...mais comment modifier ds ce cas le code du module pr pouvoir l'installer???
    Je n'ai pas de boule de cristal et tu ne nous as même pas dit lequel des modules tu essaies d'installer. D'autant que tu te doutes que la modification du code n'est sans doute pas évidente, si le module a été déclaré ne marchant qu'à partir de la 5.6, il y a de bonnes chance qu'il utilise des fonctionnalités qui n'existaient pas avant.

    --
    Jedaï

  7. #7
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    De toutes manieres, je n'ai pas les droits pr installer quoique ce soir etant une etudiante ds une tres grosse entreprise.

    Donc, quelqu'un pourrait-il m'aider pour le developpement de mon propre script pour passer mon tableau.csv en tableau PERL?
    J'ai utilise la fonction split mais le probleme reste pour obtenir un tableau a plusieurs lignes...elle ne separe qu'en colonnes et ne traite pas ttes les lignes.

  8. #8
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par roulia_rousset Voir le message
    De toutes manieres, je n'ai pas les droits pr installer quoique ce soir etant une etudiante ds une tres grosse entreprise.
    Tu pourrais tout de même l'installer en local.

    Une solution possible, bien que fragile (ben oui, utiliser un module c'est bien parce qu'il prend en compte la plupart des cas "spéciaux" comme les valeurs quotés, etc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/usr/bin/perl
    use strict; use warnings;
     
    # read the first line with fieldnames
    my $first_line = <>;
    chomp $first_line;
    my @fieldnames = split m/,/, $first_line ;
     
    # populate the array of data
    my @data;
    while(<>) {
      chomp;
      push @data, [split m/,/, $_, -1] if m/,/;
    }
     
    # do whatever the hell you want to do with the data
     
    __END__
    --
    Jedaï

  9. #9
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Merci beaucoup, desole de t'avoir fait galerer avec mes questions...
    Ta solution marche et est largement suffisante pr l'utilisation que je dois en faire.
    Il reste un petit probleme, la premiere ligne n'est pas traitee...ce n'est pas tres grave etant donnee que les informations ne sont pas contenues ds celle-ci, mais bon, si tu as une explication, ou une solution...

  10. #10
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par roulia_rousset Voir le message
    Il reste un petit probleme, la premiere ligne n'est pas traitee...ce n'est pas tres grave etant donnee que les informations ne sont pas contenues ds celle-ci, mais bon, si tu as une explication, ou une solution...
    La première ligne est traitée à part, c'est même marqué dans les commentaires... J'ai assumé que la première ligne contenait les noms des champs, donc je l'ai splitté dans @fieldnames.

    --
    Jedaï

  11. #11
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Ok, je viens de le voir, j'avais pas fait attention...
    Encore merci de tes reponses, je saurais a qui m'adresser pr d'autres pb......qd j'aurais eu un training je poserais des questions moins betes, promis!!!

  12. #12
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    derniere question, promis, mes trois premieres lignes sont des lignes de titre et ne contiennent pas d'info, ta solution est avantageuse car au moins les infos commencent a la ligne 0 qd je dois aller les chercher...dc est-ce qu'on peut les regrouper comme tu as fait?

  13. #13
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par roulia_rousset Voir le message
    derniere question, promis, mes trois premieres lignes sont des lignes de titre et ne contiennent pas d'info, ta solution est avantageuse car au moins les infos commencent a la ligne 0 qd je dois aller les chercher...dc est-ce qu'on peut les regrouper comme tu as fait?
    Tu peux te contenter de lire trois lignes avant de commencer à remplir @data.

    --
    Jedaï

  14. #14
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Merci beaucoup Jedai!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion d'un fichier csv en un tableau python
    Par titou_170 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 25/11/2010, 11h40
  2. Tableau associatif comme en perl
    Par benoitbs dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/02/2008, 14h26
  3. Réponses: 4
    Dernier message: 20/04/2007, 17h04
  4. conversion d'un tableauPHP a une tableau javascript
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/04/2006, 16h37
  5. conversion binaire-décimal sans utiliser le tableau
    Par ahmed doua dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/03/2006, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo