我想在文本文件(内容)中获取与某个字符串对应的行的索引(在本例中为InChI = 1S / C11etc ..),这是我的代码:
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
我得到了我感兴趣的专栏。
答案 0 :(得分:1)
扩展我的评论时,调用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]
答案 1 :(得分:0)
不要在代码中使用.lower()
,它应该可以正常工作。