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 :

Eliminer des doublons dans un fichier


Sujet :

Python

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut Eliminer des doublons dans un fichier
    Salut

    Voilà je logue en continu et je stock dans un fichier

    Le logue chope 3 trames a chaque fois

    Mais il ya souvent des lots de 3 trames identiques

    j'aiemrais éliminer les trames identiques

    voici un exemple

    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
    11
    22
    33
     
    44
    55
    66
     
    11
    22
    33
     
    77
    88
    99
    Comment enlever un groupe d' identique

    J'arrive à le faire quand seulement il y a seulement 1 ligne avec un list et set

    mais en groupant 3 lignes ?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Bonjour,

    Qu'est ce que ça veut dire «je logue en continu» s'il te plait ? Tu emploies loguer au sens de "faire un relevé d'activité" ?


    Je vois des séries de 3 nombres.
    Chaque nombre est il toujours seul sur une ligne ?
    Les nombres ne sont ils que des nombres à 2 chiffres ?
    Le fichier est-il ouvert pour écrire une série de 3 nombres puis refermé avec close() , ou bien est-il ouvert en permanence ?
    À quel moment veut tu éliminer les doublons ? Après l'activité de log ou pendant ? Ou éviter d'écrire une série qui se trouve déjà dans le fichier ?

    En ayant un peu plus de ces renseignements, ce devrait être facile de résoudre ton problème.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    Merci de ton aide

    je log 150 lignes à la fois j'analyse les 150 lignes

    si je trouve les trames qui me correspondent je le stock dans un fichier puis je le ferme une fois fermé j'aimerais enlever les doublons

    les trames sont toujours par 2 ou 3 il y a de tout comme caracteres c'est des trames en hexa et de longueur différente

    voici un exemple concret

    on remarque qu'il y a plusieurs fois 2 trames identiques

    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
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    en faites mes trames reviennent j'aimerais juste stocker les différentes

    Merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Tu écris
    «les trames sont toujours par 2 ou 3»
    Veux tu dire: au moment où tu les captes et les inscris dans le fichier ?

    Parce que je ne comprends pas s'il s'agit d'enlever des lignes identiques quelles que soient leurs positions dans le fichier et même si elles sont répétées plusieurs fois

    ou s'il s'agit de les considérer par séries de 2 ou 3 groupées pour faire les comparaisons avant de faire l'élimination.

    Dans le premier cas il suffit de faire ce qui suit, mais c'est tellement simple que je m'attends à ce que tu dises que c'est plus compliqué. Auquel cas, il faudra être plus précis.

    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
    41
    42
    43
    ch = """
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF
    CAF00001229E202FA528C25F689E1D100B9784303643A868153FF8AC9FF8CFF37F7E04D2C17FEC
    CA18010120A9143A213A4302000000000000000000000000000000F0082F861C538897ECD8
    CAF00001229E200F2220C20038120430F00006A0241340080508300C0842C5B3910C8C02098B86
    CA1801011dA9113A213A4320000000000000000000000000F0088311D313DD595FEF"""
     
    li = ch.split()
    print li
     
    print '\n'
    lo = []
    for y in li:
        if y not in lo:
            lo.append(y)
    print lo
    Ce code marche bien s'il y a peu de lignes uniques, c'est à dire beaucoup de doublons, parce que la liste lo ne grandit pas vite et donc la condition if y not in lo peut être examinée rapidement par le programme.

    Sinon, si les doublons sont rares, lo va grandir très rapidement et le programme va passer un temps fou à réexaminer sans cesse de façon exhaustive quasiment l'ensemble de la liste lo pour chaque nouvel élément y de li considéré. Dans ce cas, il faut un autre code avec une astuce pour éviter tous ce travail.

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    il faut absolument marcher par serie

    je controle les trames 2 par 2 ou 3 par 3 toujours par couple

    et le couple ne doit etre present qu'une seul fois

    le fichier non ne va pas grandir il y aura au final qu'une 10ene de trame en tout

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Mais le problème est alors:
    comment reconnaît on les séries de 2 ou 3 dans un fichier de log?
    C'est à dire:
    pour une ligne donnée du fichier, comment reconnaît on qu'elle appartient
    - à une série de 2 avec soit la précédente soit la suivante,
    - ou à une série de 3 avec soit les deux précédentes, soit les deux suivantes, soit les deux de part et d'autre d'elle ?

    Est-ce que dans un fichier donné, il n'y a soit que des séries de 2, soit que des séries de 3 ?
    J'espère, parce que pour le moment je ne vois pas comment la succession des séries est connue.

    Et je ne comprends pas ceci:
    «je controle les trames 2 par 2 ou 3 par 3 toujours par couple»
    Mais ça va sans doute s'éclairer avec ta réponse aux questions au dessus.

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

Discussions similaires

  1. [Batch] .bat pour éliminer des doublons dans 2 fichiers
    Par Nono Sto dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 04/05/2014, 05h42
  2. Supprimer des doublons dans un fichier
    Par lawrenz23 dans le forum C++
    Réponses: 6
    Dernier message: 27/10/2013, 15h27
  3. Rechercher des doublons dans un fichier de type csv
    Par phoenixatareva dans le forum C++
    Réponses: 6
    Dernier message: 12/08/2008, 20h02
  4. Prbleme de liaison avec des doublons dans le fichier lié.
    Par krak70 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/10/2005, 11h03
  5. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27

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