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 :

Probleme de boucle for comparer deux fichier .txt


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par défaut Probleme de boucle for comparer deux fichier .txt
    Bonjour
    je coince sur un mini probléme qui m a comeme pris 2 jours ,je veux tester si les villes du fichier nos_city.txt existent sur le fichier final_city.txt alor j'ai ouvert les deux fichiers et faire une boucle sur nos_city pour voir si la ville existe dans final_city ,mais le probleme est que dans la deuxieme boucle ca traite que la premiere ligne du fichier nos_city et pourtant ils sont en boucle, je ne comprend vraiment pas pourquoi ca sort de la boucle au bout de la premiere ligne.
    merci de vos reponses



    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
    nbr = 0
     
    import codecs
     
    with open('nos_city.txt','r') as orig,codecs.open('final_city.txt','r','utf-8')as mvi:
     
     
     
        for sf in orig.readlines():
            nbr2=0
            sf=sf.split(';') 
     
            for ci in mvi.readlines(): #deuxieme boucle
     
                ci=ci.split(',')
                nbr2 += 1
     
     
                #print(str(nbr2)+'  '+sf[3])
                '''if ci[4][0]=='"'  :
                    ci[4]=ci[4][1:-1]
                
                elif ci[5][0]=='"':
                    ci[5]=ci[5][1:-1]'''
     
     
                if sf[3][1:-1] in ci:
                    #print(x[3][1:-1])
                    nbr +=1
        print(nbr)

  2. #2
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    readline() lit un fichier ligne par ligne. Donc en 9 , le for ne parcourira qu'une seule ligne...

    J'utiliserais plutôt (à modifier selon tes séparateurs):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    with open('nos_city.txt','r') as orig:
        data_orig = orig.read()
    with open('final_city.txt','r','utf-8') as mvi:
        data_mvi = mvi.read()
     
     
    for ville in data_origin:
            if ville in data_mvi:
                print(f"{ville} est bien dans le fichier final_city.txt")
            else:
                print(f"{ville} n'est pas dans le fichier final_city.txt")

  3. #3
    Membre très actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par défaut
    Re bonjour
    je vous remercie vraiment de votre reponse , qui quand j 'etait entrain de l'essayé j'ai trouver la solution, enfait il falais que j'ouvre le deuxieme fichier dans la boucle, pourquoi n y ai-je pas penser plutot, voila mon nouveau code qui marche a mervaille
    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
     
    with open('nos_city.txt','r') as orig:      
     
        for ville in orig.readlines():
     
            nbr2=0
            ville=ville.split(';')
     
            with codecs.open('final_city.txt','r','utf-8') as mvi:
     
                for n_ville in mvi.readlines():
                    nbr2 += 1
     
                    #print(str(nbr2)+'  '+ville[3])
                    if ville[3][1:-1] in n_ville:
                        nbr += 1
     
     
    print(nbr)

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par animalx123 Voir le message
    voila mon nouveau code qui marche a mervaille
    Oui enfin il marche à merveille mais si chaque fichier fait 1000 lignes, le code en traitera 1 million !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with open('nos_city.txt', 'r') as fp: t1=set(x for t in (l.strip().split(";") for l in fp) for x in t)
    with codecs.open('final_city.txt', 'r', 'utf-8') as fp: t2=set(x.strip() for x in fp)
    print(len(t1 & t2))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. [Batch] Deux boucles FOR pour comparer deux fichiers ligne par ligne et une condition IF
    Par Christophe.G dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 18/11/2014, 23h10
  2. Probleme sur un boucle For d'un fichier texte
    Par erlerwade dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 16/12/2011, 15h36
  3. comparer deux fichier .txt
    Par koKoTis dans le forum VBScript
    Réponses: 4
    Dernier message: 31/01/2008, 11h01
  4. Fonction c qui compare deux fichiers ???
    Par babyface dans le forum C
    Réponses: 4
    Dernier message: 19/11/2005, 13h07
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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