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

Langage Perl Discussion :

Tri fichier CSV suivant plusieurs colonnes


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Tri fichier CSV suivant plusieurs colonnes
    Bonjour,

    Je ne suis pas un crack du perl (pratique 1 fois par an environ...), j'aurais donc besoin d'un coup de main

    J'ai un fichier csv que l'on me demandait de trier suivant la première colonnes. Jusque là pas de problème...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    open(FILEIN, "test.csv") or die print "Can't open `$file': $!";
    @datas = <FILEIN>;
    @sorteddatas = sort { $a cmp $b } @datas;
    ...
    Je retrouve mon résultat dans @sorteddatas.

    Mais malheureusement, la demande a évoluée. Maintenant on me demande d'effectuer le tri sur la 2ieme colonne puis sur la 5ieme...

    Je sais que je suis sensé de passer par un sort pour effectuer le tri de tel sorte, du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @sorted = sort { $hash{$a} cmp $hash{$b} } keys %hash;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @sorteddatas = sort {(split ';', $a)[2] <=> (split ';', $b)[2]} @datas;
    Mais malheureusement je ne comprends pas comment effectuer ce tri... Pourriez vous m'aider ?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par ddouet2000 Voir le message
    Maintenant on me demande d'effectuer le tri sur la 2ieme colonne puis sur la 5ieme...
    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
    19
    20
    21
    #!/usr/local/bin/perl
     
     
     
    use strict;
    use warnings;
     
     
    my $file = 'test.csv';
     
    open(FILEIN, $file) or die print "Can't open `$file': $!";
    my @datas = <FILEIN>;
     
    my @sorted_datas =
      map { $_->[2]}
        sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] }
           # récupération de $data[2] dans $1 et $data[5] dans $2 
           map { m/^\w+;\w+;(\w+);\w+;\w+;(\w+)/;  [ $1, $2, $_ ] } 
            @datas;
     
    map {print "$_\n"} @sorted_datas;
    voir la partie sur La Transformée Schwartzienne et la discussion
    J'ai utilisé des ; comme séparateurs de tes valeurs.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup jasmine.
    La discussion est très enrichissante !

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

Discussions similaires

  1. Import fichier csv dans plusieurs tables
    Par Gbillou dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/11/2009, 16h57
  2. Réponses: 4
    Dernier message: 12/05/2009, 13h21
  3. Fichier CSV : Recherche et Colonne
    Par Antho42 dans le forum C#
    Réponses: 4
    Dernier message: 10/03/2009, 13h05
  4. Lecture d'un fichier de données à plusieurs colonnes
    Par Contact2012 dans le forum MATLAB
    Réponses: 7
    Dernier message: 09/01/2009, 16h18
  5. tri par moyenne sur plusieurs colonnes
    Par adr22 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2007, 17h19

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