Je suis nouveau à python et avoir la pièce suivante du code de test avec une boucle imbriquée et je reçois des listes inattendues générées:liste inattendue apparaissant dans la boucle python
import pybel
import math
import openbabel
search = ["CCC","CCCC"]
matches = []
#n = 0
#b = 0
print search
for n in search:
print "n=",n
smarts = pybel.Smarts(n)
allmol = [mol for mol in pybel.readfile("sdf", "zincsdf2mols.sdf.txt")]
for b in allmol:
matches = smarts.findall(b)
print matches, "\n"
Essentiellement, la liste « recherche » est un couple de chaînes que je cherche à faire correspondre dans certaines molécules et je veux itérer sur les deux chaînes dans chaque molécule contenue dans allmol en utilisant le logiciel pybel. Cependant, le résultat que je reçois est:
['CCC', 'CCCC']
n= CCC
[(1, 2, 28), (1, 2, 4), (2, 4, 5), (4, 2, 28)]
[]
n= CCCC
[(1, 2, 4, 5), (5, 4, 2, 28)]
[]
comme prévu, sauf pour quelques listes vides supplémentaires oblongs qui me salit et je ne vois pas où ils viennent. Ils apparaissent après le "\ n" et ne sont donc pas un artefact du smarts.findall(). Qu'est-ce que je fais mal? merci pour toute aide.
non apparentés: déplacer 'llmol = [mole pour mole dans pybel.readfile (« sdf », « zincsdf2mols.sdf.txt »)] de' la boucle. – badp