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 :

boucle for for dans python (boucle dans boucle)


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2010
    Messages : 58
    Points : 44
    Points
    44
    Par défaut boucle for for dans python (boucle dans boucle)
    Bonjour à vous tous
    je sollicite à nouveau votre aide
    ene ffet j'ai un petit soucis pour mettre en place 2 boucle for l'un apres l'autre.
    Je pense plus a un soucis de logique que de language..
    En gros j'ouvre 2 fichier csv
    je lis le premier avec une boucle for
    et pour lire le second j'ouvre tout de suite une deuxieme boucle
    la il recherche une condition lié au 2 fichiers CSV ( en gros le secon fichier contient une bibliotheque et je recherche a savoir si dans le premier fichier on a ou non ce mot) et si c'est vrai alors j'indexe par le code de la bibliotheque le mot...

    J'ai mis des print pour verifier mon erreur et en effet il entre bien dans la 2 deuxieme boucle for mais juste lors de la 1ere occurence ensuite pour la 2eme occuerence il oublie la deuxieme boucle for et termine normalement le programme...

    Un grand merci
    Cedric


    Voici mon code

    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
    import csv
    from cinfony import rdk
    from rdkit import Chem
     
    myfile = open("C:\Data\etudecycle/poster/posteritem.csv","r")
    suppl = csv.reader(myfile)
    myfilev2 = open("C:\Data\etudecycle/poster/dictionnairecycle.csv","r")
    supplv2 = csv.reader(myfilev2)
     
    writer = Chem.SDWriter("C:\Data\etudecycle/poster/posteritem.sdf")
     
     
    i = 0
    for a in suppl:
     
        m = Chem.MolFromSmiles(a[0])
     
     
        for line in supplv2 :
     
            if line[0] == a[2]:
                m.SetProp("nbcycle",line[1])
                print line[0]          
                print a[2] 
     
     
     
    myfile.close()
    print "CSV --> SDF : OK"

    PS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    from cinfony import rdk
    from rdkit import Chem
    m = Chem.MolFromSmiles(a[0])
    m.SetProp("nbcycle",line[1])
    Ces lignes font parties d'un add on utilisant Python dont le nom est RDKIT

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    cvs.reader renvoie un itérateur, pas une liste. Cela implique qu'on ne peut itérer qu'une seule fois dessus. Une solution simple (lignes modifiées en gras):
    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
    import csv
    from cinfony import rdk
    from rdkit import Chem
     
    myfile = open("C:\Data\etudecycle/poster/posteritem.csv","r")
    suppl = csv.reader(myfile)
     
    writer = Chem.SDWriter("C:\Data\etudecycle/poster/posteritem.sdf")
     
    i = 0
    for a in suppl:
        
        m = Chem.MolFromSmiles(a[0])
    
        myfilev2 = open("C:\Data\etudecycle/poster/dictionnairecycle.csv","r")
        supplv2 = csv.reader(myfilev2)
        
        for line in supplv2 :
            
            if line[0] == a[2]:
                m.SetProp("nbcycle",line[1])
                print line[0]          
                print a[2] 
     
        myfilev2.close()
    
     
    myfile.close()
    print "CSV --> SDF : OK"
    Euh au fait les \ ne sont pas échappés et ce ne sont pas des raw string. Ca fonctionne tel quel ça ??

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2012, 01h18
  2. goto dans un if dans une boucle for
    Par le-corse-du-54 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 17/02/2012, 15h18
  3. Une image dans un Jpanel dans un Jpanel dans un Jframe
    Par ThomasH dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 09/12/2009, 20h23
  4. comment effacer un element dans un collection dans une boucle for each
    Par medkarim dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/10/2008, 12h48
  5. Réponses: 14
    Dernier message: 03/06/2008, 09h59

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