我是 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"
本质上,列表“搜索”是我希望在某些分子中匹配的几个字符串,我想使用 pybel 软件迭代 allmol 中包含的每个分子中的两个字符串。但是,我得到的结果是:
['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)]
[]
正如预期的那样,除了一些额外的空列表,它们让我很困惑,我看不到它们来自哪里。它们出现在“\n”之后,因此不是 smarts.findall() 的人工制品。我究竟做错了什么?谢谢你的帮助。