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 :

lecture d'un fichier et suppression de doublons sur quelques champs


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 54
    Par défaut lecture d'un fichier et suppression de doublons sur quelques champs
    Bonjour

    Je lis un fichier plat séparé par ; . J'en extrais des colonnes qui m'interessent. supposons que j'extrais 5 colonnes et que je ne veux pas de doublons sur ces 5 colonnes. Ma régle c'est que j'ai deux indices A et B c'est toujours l'indice A qui fait foi si ces 5 colonnes sont identiques pour A et B je delete tout ce qui vient de B. Ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A	B		
    1A	1A      EUR  SIG  MAR
    1A	1A_TX  EUR  SIG  MAR
    Là je veux deleter la ligne où il ya 1A_TX . Par contre si j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A	B		
    1B	1B        EUR  SIG  MAR
    1A	1A_TX   EUR  SIG  MAR
    je veux garder la ligne 1A_TX.
    Moi je pensais faire un test du style est ce que le champ sur le quel je suis se termine par X .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($tabDataSA[$GOP_INDICE]!=~"*X")
    Sauf que ça ne fait pas du tout ce que je veux.
    Qui peut me donner des indications .
    Merci

  2. #2
    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 k6971
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($tabDataSA[$GOP_INDICE]!=~"*X")
    Sauf que ça ne fait pas du tout ce que je veux.
    Qui peut me donner des indications .
    Merci
    Quoi qu'il en soit du reste, cette ligne est fausse, d'une part bien que cela puisse fonctionner, utiliser une chaîne de caractère comme regex est rarement une bonne idée, d'autre part cette regex est syntaxiquement incorrecte.
    Une ligne correcte serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $tabDataSA[$GOP_INDICE] !~ m/.*X$/ )
    --
    Jedaï

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 54
    Par défaut
    Jedai je comprend sje ne suis qu'un tout novice sur perl. Si tu peux me donner des indic je suis preneur sur comment éviter mes doublons.

  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
    Tu peux effectuer une recherche sur le forum, tu trouveras pas mal de sujet sur la suppression de doublons.
    Cependant ton énoncé me laisse songeur : en effet un coup tu dis que tu as doublon quand les 5 colonnes sont identiques entre deux enregistrements, mais ensuite tu sembles dire que l'une des colonne est différente et que c'est ça qui te permet de décider laquelle supprimer (mais si les enregistrements sont vraiment des doublons peu importe lequel tu supprimes, n'est-ce pas ?)...

    Donne quelques exemples réels (légèrement remaniés si les données sont confidentielles), que l'on voit quel est exactement ton problème.

    --
    Jedaï

  5. #5
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 54
    Par défaut
    données confientielles

  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
    Ok, dans ce cas pour savoir s'il faut supprimer une ligne (ou de préférence l'éliminer avant de l'enregistrer), il suffit de vérifier si la 4ème colonne est égale à la 3ème plus "_TX" ?
    Dans ce cas en supposant que les colonnes sont dans @cols :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    next if $cols[3] eq $cols[2].'_TX';
    --
    Jedaï

Discussions similaires

  1. [XL-2013] Fichier Email, suppression des doublons
    Par nicklaren dans le forum Excel
    Réponses: 2
    Dernier message: 25/08/2014, 16h32
  2. Suppression des doublons sur un fichier en fonction de plusieurs champs
    Par moctarim dans le forum Shell et commandes POSIX
    Réponses: 7
    Dernier message: 27/12/2012, 12h06
  3. Suppression de doublons sur une grosse table
    Par CaptainT dans le forum SQL
    Réponses: 20
    Dernier message: 24/05/2008, 10h25
  4. [SQL] Suppression des doublons d'un champs SQL
    Par fabien14 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/05/2007, 15h28
  5. Suppression de doublons sur plusieurs champs
    Par riperoutz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2007, 15h23

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