首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文本文件python中查找行索引

在文本文件python中查找行索引
EN

Stack Overflow用户
提问于 2017-10-17 03:49:30
回答 2查看 5.5K关注 0票数 1

我希望得到对应于某个字符串的行的索引(在本例中,InChI=1s/C11等)在文本文件(内容)中,下面是我的代码:

代码语言:javascript
运行
复制
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)

然而,我得到了空括号[]。但我很确定这条线是存在的,因为如果我运行以下命令:

代码语言:javascript
运行
复制
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

我知道我感兴趣的线路。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-17 03:56:26

扩展到我的评论,调用lower()将小写你的目标字符串,而你的搜索字符串有大写字母-你不可能匹配任何类似的东西。

此外,您不必在范围内进行迭代。for可以直接迭代content中的项。这会管用的。

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2017-10-17 03:55:20

不要在代码中使用.lower(),它应该可以很好地工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46782168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档