我希望得到对应于某个字符串的行的索引(在本例中,InChI=1s/C11等)在文本文件(内容)中,下面是我的代码:
with open('compounds.dat', encoding='utf-8', errors='ignore') as f:
content = f.readlines()
index = [x for x in range(len(content)) if "InChI=1S/C11H8O3/c1-6-5-9(13)10-7(11(6)14)3-2-4-8(10)12/h2-5" in content[x].lower()]
print(index)
然而,我得到了空括号[]。但我很确定这条线是存在的,因为如果我运行以下命令:
for line in f:
if u"InChI=1S/C11H8O3/c1-6-5-9(13)10-7(11(6)14)3-2-4-8(10)12/h2-5" in line:
l = line
我知道我感兴趣的线路。
发布于 2017-10-17 03:56:26
扩展到我的评论,调用lower()
将小写你的目标字符串,而你的搜索字符串有大写字母-你不可能匹配任何类似的东西。
此外,您不必在范围内进行迭代。for
可以直接迭代content
中的项。这会管用的。
search_str = "InChI=1S/C11H8O3/c1-6-5-9(13)10-7(11(6)14)3-2-4-8(10)12/h2-5"
lines = [x for x in content if search_str in content]
发布于 2017-10-17 03:55:20
不要在代码中使用.lower()
,它应该可以很好地工作。
https://stackoverflow.com/questions/46782168
复制相似问题