在文本文件python

时间:2017-10-17 03:49:31

标签: python search indexing line

我想在文本文件(内容)中获取与某个字符串对应的行的索引(在本例中为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

我得到了我感兴趣的专栏。

2 个答案:

答案 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(),它应该可以正常工作。