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 :

[langage] 2 fichier dans 1 en evitant les doublons


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 46
    Points
    46
    Par défaut [langage] 2 fichier dans 1 en evitant les doublons
    bonjour a tous , voila j ai deux fichiers qui contiennent des noms d utilisateurs et je veux faire un seul fichier qui regroupe tous les utilisateurs mais en evitant d avoir un utilisateurs deux fois si il est dans les deux fichiers de depart.

    j ai pense a ca mais evidement ca ne marche pas: surement a cause de la comparaison du scalaire et du tableau !!

    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
     
    open (FICH1,"<fich2");
    @tab1 = <FICH1>;
    close FICH1;
     
    open (TOUS,">>tous");
    foreach (@tab1)
    {
    	print TOUS;
    }
     
    open (FICH2,"<FICH2");
    foreach $line (<FICH2>)
    {
    	if ($line != @tab1)
    	{
    		print TOUS "$line\n";
    	}
    }
    close FICH2;
    close TOUS;
    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    salut

    tu peux faire quelque chose du style :

    lire le fichier 1 et stocker toutes les lignes dans le tableau 1

    lire le fichier 2 et stocker toutes les lignes dans le tableau 2

    creer une table de hachage dont les cles sont les valeurs de tes deux tableaux (comme les cles d'un hachage sont uniques, tu elimines la redondance)

    et voila, ensuite tu peux parcourir ton hachage et creer un nouveau fichier

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    ca passe !!

    en remuant ma petite cervelle (jusque la j avais la fleme) j ai reussi a trouver une soluce en integrant une deuxieme boucle foreach. c est pas tres elegant mais ca a l avantage de marcher. si qqun a une meilleur soluce a proposer qu il hesite pas mais la mienne c est ca :

    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
     
    		unlink ("tous");
    		open (FICH1,"<$fich1");
    		@tab1 = <FICH1>;
    		close FICH1;
     
    		open (TOUS,">>tous");
    		foreach (@tab1)
    		{
    			print TOUS;
    		}
     
    		open (FICH2,"<$fich2");
    		foreach $line (<FICH2>)
    		{
    			$deja = "0";
    			foreach $ligne (@tab1)
    			{
    				if ($line eq $ligne)
    				{
    					$deja = "1";
    				}
    			}
    			if ($deja eq "0"){
    			print TOUS "$line";}
    		}
    		close FICH2;
    		close TOUS;
    voila ctous ce que j ai a dire a propos de ca

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    salut

    tu peux faire quelque chose du style :

    lire le fichier 1 et stocker toutes les lignes dans le tableau 1

    lire le fichier 2 et stocker toutes les lignes dans le tableau 2

    creer une table de hachage dont les cles sont les valeurs de tes deux tableaux (comme les cles d'un hachage sont uniques, tu elimines la redondance)

    et voila, ensuite tu peux parcourir ton hachage et creer un nouveau fichier
    j ai poste en meme temps que toi...

    ca a l air pas mal ton truc mais j ai jamais touche aux tables de hachage c est quoi exactement. je suis encore un novice en perl

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    http://www.lhullier.org/publications...hapitre07.html

    voila

    commence par lire ceci, c'est bien pour debuter

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    ca me parait tres bien et tres pratique ces petites table de hachage, merci pour ton aide j ai pouvoir faire qqchose de mieux qu ce que j ai pondu.

  7. #7
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Fsapet a raison, le hachage c'est plus propre. Tu peux faire bourrin comme ca : (ca reste propre quand meme).

    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
    my %hachage;
    unless(open IN_1,"f1"){ die "Impossible ouvrir f1"; }
    unless(open IN_2,"f2"){ die "Impossible ouvrir f2"; }
    while(<IN_1>){
    	chomp $_;
    	$hachage{$_}="0";
    }
    close IN_1;
    while(<IN_2>){
    	chomp $_;
    	$hachage{$_}="0";
    }
    close IN_2;
    my @tab =  keys%hachage;
    print "@tab";
    Tu peux aussi verifier la presence d'une clef avec exists.
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

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

Discussions similaires

  1. Eviter les doublons dans une requête.
    Par Smint dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/03/2017, 16h17
  2. [MySQL] eviter les doublons dans une bdd
    Par sanaa16 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/06/2008, 17h40
  3. Eviter les doublons dans les aléatoires
    Par Gunner4902 dans le forum Langage
    Réponses: 4
    Dernier message: 13/12/2007, 12h49
  4. Eviter les doublons dans une requete ?
    Par DrySs dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/03/2006, 05h24
  5. [MySQL] Eviter les doublons à l'insertion dans une base
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 26/01/2006, 15h26

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