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

Python Discussion :

Supprimer lignes en doubles


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Par défaut Supprimer lignes en doubles
    Bonjour à tous,
    je souhaite supprimer les lignes en double dans un fichier y compris la ligne originale.

    Exemple:

    pommes
    bananes
    carottes
    fraises
    pommes
    carottes
    je veux en résultat:

    bananes
    fraises
    J'ai ce bout de code qui élimine les doublons mais je n'arrive pas à éliminer chaque ligne qui existe 2 fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    seen = set() # holds lines already seen
    outfile = open(outfilename, "w")
    for line in open(infilename, "r"):
        if line not in lines_seen: # not a duplicate
            outfile.write(line)
            lines_seen.add(line)
    outfile.close()
    Ce bout de code me donne:
    Pommes
    bananes
    carottes
    fraises
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    (je mets de côté pour le moment le "problème" de la première ligne)

    Tu ne peux pas, de toute façon, commencer à écrire des lignes "à la volée" tant que tu n'as pas exploité (lu) l'intégralité de ton fichier en entrée : quand tu tombes sur une ligne qui n'est jamais apparue précédemment, rien ne te dit que tu ne vas pas la retrouver un petit peu plus loin.

    Donc, jette ton exemple de code : ce n'est pas avec une modification mineure que cela fonctionnera mieux.

    Selon la taille, importante ou non, de ton fichier en entrée, tu chargeras l'ensemble des lignes ou feras deux passes pour éliminer les doublons.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà un petit code un peu "rustique" qui a l'air de faire le boulot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Python v2.7
     
    with open("fichier.txt", 'r') as fs:
        liste = fs.readlines()
     
    with open("fichiersansdoublon.txt", 'w') as fd:
        for ligne in liste:
            if liste.count(ligne)==1:
                fd.write(ligne)
    Avec le fichier de départ contenant:

    pommes
    bananes
    carottes
    fraises
    pommes
    carottes
    le fichier résultant "fichiersansdoublon.txt" affiche bien:

    bananes
    fraises

  4. #4
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Reste à traiter le "problème" de la première ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    aie
    banane
    pomme
    banane
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    plx@sony:~$ python doublons.py
    plx@sony:~$ more fichiersansdoublon.txt 
    aie
    pomme
    plx@sony:~$
    Aie

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Par défaut
    Merci pour vos réponse.

    @tyrtamos: Ton petit bout de code à l'air de très bien fonctionner, c'est bien ce que je voulais.

    @plxpy: Je ne vois pas de quel "problème" de première ligne tu parles ...

  6. #6
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    c'est quoi, alors

    Citation Envoyé par doudoubens
    ... y compris la ligne originale
    tu parlais de quoi ???

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

Discussions similaires

  1. Supprimer lignes en double
    Par Oreo_ dans le forum SAS Base
    Réponses: 6
    Dernier message: 21/06/2013, 11h14
  2. Réponses: 14
    Dernier message: 22/09/2011, 16h11
  3. Supprimer les lignes en double
    Par illight dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/09/2007, 19h43
  4. Supprimer des lignes en double.
    Par Empty_body dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/06/2007, 14h45
  5. Supprimer ligne en double
    Par azman0101 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/06/2004, 17h53

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