首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索文件中的字符串并从该文件中打印相关行

搜索文件中的字符串并从该文件中打印相关行
EN

Stack Overflow用户
提问于 2014-07-15 19:48:06
回答 1查看 138关注 0票数 0

我有两个文件。一个( every . that )包含一个长长的物种列表和一些关于每个物种的信息,还有一个(artsliste.txt)包含来自某个位置的物种。我想为artsliste.txt中列出的所有物种提取电子编号to中的信息。打印相应的行为短行。

我觉得我离得很近,感觉这不会太难,但我可能一开始就错了。

我最新的代码是:

代码语言:javascript
复制
ellenberg=open('e-number.txt').read()
arter=open('artsliste.txt','r')

for line in arter:
    art = arter.readline()
    if art in ellenberg:
        print(ellenberg)

artsliste.txt包含如下内容:

[医]假白杨 [医]桔梗 [医]髋臼Aeculus 马氏卷叶蛾 [医]黑山楂 黑麦草 樟树红掌

number.txt.this包含这样的内容:

新星阿卡纳星亚科2527。8.3.6.3.[医] novae-zelandiae 大白菜3 5 5 5 7 7 6 0宏碁夏令营 桔梗4 4 4.5.7.7 0 0μg 假白杨5 4 4 6 5.白杨6 7 6 0 0

我希望我的输出看起来像:

假白杨5 4 4 6 5.白杨6 7 6 0 0 Oenanthe crocata 13637.8.6.7.1只奥伊南鳄鱼 三叶草培养基2087 7 7 4 6 6 3 0

我觉得大多数函数都可以打印找到的行,不管怎样,我想我必须在我已经拥有的搜索函数中设置另一个搜索函数,这是没有任何意义的。希望有人能把我带向正确的方向。诚挚的问候。

EN

回答 1

Stack Overflow用户

发布于 2014-07-15 20:20:58

来自读出线文档:

f.readline()从文件中读取一行;字符串末尾保留换行符(\n)

代码语言:javascript
复制
art = arter.readline().strip()

应该能帮上忙。

根据您的评论更新

试试这个:

代码语言:javascript
复制
for line in arter:
    art = arter.readline().strip()
    index = ellenberg.find(art)
    if index > -1:
        line_end_index = ellenberg.find('\n', index)
        print(ellenberg[index:line_end_index])

还有一个更新:只有当行以art开头时,此代码才会打印完整的相关行,否则,它将从art的入口点打印块到行尾。

要打印完整的行,可以使用以下代码:

代码语言:javascript
复制
ellenberg=open('e-number.txt').readlines()
arter=open('artsliste.txt','r')
for line in arter:
    for ellenberg_line in ellenberg:
        line = line.strip()
        if len(line) > 0 and line.strip() in ellenberg_line:
          print ellenberg_line
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24766918

复制
相关文章

相似问题

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