在文件中搜索字符串并从文件中打印相关行

时间:2014-07-15 19:48:07

标签: python string file search

我有两个文件。一个(e-number.txt)包含一个长物种列表和每个物种的一些信息和一个(artsliste.txt)包含来自某个位置的物种。 我想在e-number.txt中提取artsliste.txt中列出的所有物种的信息。 打印相应的行为简短。

我觉得我很亲近,觉得它不会太难,但我可能已经开始出错了。

我的最新代码:

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包含以下内容:

  

Acer pseudoplatanus

     

Acer platanoides

     

Aeculus hippocastaneum

     

Adoxa moschatellina

     

黑接骨木

     

Aegopodium podagraria

     

Anthriscus sylvestris

e-number.txt包含以下内容:

  

Acaena novae-zelandiae 2527。 8。 3。 6。 3。 0 Acae nova Acaena novae-zelandiae

     

Acer campestre 3 5 5 5 5 7 7 6 6 0 0 Acer camp Acer campestre

     

Acer platanoides 4 4 4。 5。 7。 7 0 0 Acer plat Acer platanoides

     

Acer pseudoplatanus 5 4 4 6 5。 6 7 6 0 0 Acer pseu Acer pseudoplatanus

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

  

Acer pseudoplatanus 5 4 4 6 5。 6 7 6 0 0 Acer pseu Acer pseudoplatanus

     

Oenanthe crocata 1363。 7。 8。 6。 7。 1 Oenanthe crocata

     三叶草培养基2087 7 7 4 4 6 6 3 4 0 0三叶草培养基

我觉得大多数都有一个可以打印找到的行的功能,无论哪种方式,我想我必须在我已经拥有的那个内部设置另一个搜索功能,这没有任何意义。 希望有人能让我朝着正确的方向前进。 最好的问候。

1 个答案:

答案 0 :(得分:1)

来自readline文档:

  

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

art = arter.readline().strip()

应该有帮助。

根据您的评论更新

试试这个:

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的入口点打印块到行尾。

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

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