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 :

perl doublon fichier texte


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 393
    Points : 124
    Points
    124
    Par défaut perl doublon fichier texte
    Bonjour,
    dans un fichier du type :
    aaa
    bbbbb
    ccccc
    aaa
    aaaa

    il s'agit d'enlever les doublons.
    Il faudrait à priori (?) passer par une table de hachage.
    J'ai essayé :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    open(FILE,"$path/toto");
    while(<FILE>)
    {
    push @TdT, [ split('\n', $_) ];
    }
    my %hachage = @TdT;
    my @uniques = keys %hachage;
     
     
    # affiche le tableau de hachage hachage
    foreach my $k (@uniques)
    {
    print "Clef=$k Valeur=$hachage{$k}\n";
    print "Valeurxx=$TdT[$hachage{$k}]\n";
     
    }
     
    # ---> ne donne pas les valeurs
     
     
     
    foreach my $t (@TdT)
    { next if $deja_vu{$t}++;
    push(@uniques,$t);
    }
    # --> ceci ne marche pas non plus !
    # affiche le tableau uniques
    for $aref ( @uniques ) {
    print "@$aref\n";
    }
    # j'obtiens les mêmes données que fichier toto avec les doublons !
     
     
    et !!!!
    for $i ( 0 .. $#TdT ) {
    $objet = $TdT[$i][0];
    print "elt $i is $objet \n";
    print DOUBLONS @uniques ;
    print DOUBLONS "\n" ;
    }
    #--> ne marche pas non plus !


    Je pense qu'il y a plus simple !

    Merci pour vos lumières.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 587
    Points : 2 036
    Points
    2 036
    Par défaut
    Hello,

    bon déjà, tu aurais utilisé les balises CODE # pour mettre mieux en page ton code, ça nous aurait été plus agréable à l'oeil

    Mais bon, on fera avec (ou plutôt sans)

    Le code ci-dessous se charge de stocker tes données directement dans un hachage. Utile si l'ordre de tes données n'a pas d'importance ET si tu ne souhaites pas te soucier des valeurs trouvées plus d'une fois.

    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
    use strict;
    use warnings;
     
    my $Fichier = "ton_fichier.txt";
    my %Unique;
     
    open(IN, $Fichier) or die("err lecture $Fichier : $! \n");
    while(<IN>)
    {
        chomp();
        ++$Unique{$_};
    }
    close(IN);
     
    foreach(keys %Unique)
    {
        print "valeur $_ trouvée $Unique{$_} fois\n";
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 393
    Points : 124
    Points
    124
    Par défaut suite doublons
    Re-bonjour,
    Merci beaucoup
    Apparemment je n'avais pas tout compris dans les tables de hachage ...
    Le code est d'apparence simple !
    A+

  4. #4
    Membre averti Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Points : 363
    Points
    363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while(<IN>)
    {
        chomp();
        ++$Unique{$_};
    }
    Un peu ésotérique...

    Mais qu'est-ce que c'est beau !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 393
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    le code n'est pas de moi !
    mais de
    Arioch
    Membre émérite
    Cordialement

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

Discussions similaires

  1. [débutant]Perl lire un fichier texte
    Par Ralfman68 dans le forum Langage
    Réponses: 5
    Dernier message: 06/06/2007, 21h28
  2. recherche dans un fichier texte en perl(débutant)
    Par Shyboy dans le forum Langage
    Réponses: 3
    Dernier message: 05/07/2006, 00h53
  3. [PERL] traitement fichier texte
    Par osiris73 dans le forum Langage
    Réponses: 10
    Dernier message: 05/05/2006, 21h06
  4. Perl: Extraction de données d'un fichier texte ?
    Par fifto dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2006, 17h01
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 15h13

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