2017-08-03 80 views
0

长时间监听第一次来电,我对此很新,所以请客气。如何开始阅读特定行中的文本并停止和特定行

我有一个大的文本文件,我想去掉页眉和页脚。我想触发文本中特定字符串的开始和停止阅读行。

filename ='Bigtextdoc.txt' 
startlookup = 'Foo' 
endlookup = 'Bar' 
with open(filename, 'r') as infile: 
    for startnum, line in enumerate(infile, 1): 
     if startlookup in line: 
      data = infile.readlines() 
      for endnum, line in enumerate(infile, 1): 
       if endlookup in line: 
        break 
print(data) 

这样我可以读取线之后的报头包含“富”和如果我移动数据=行后如果endlookup线它将只读脚注中的线开始于“酒吧”

我不知道如何从Foo开始并停在酒吧?

回答

2

为了提高可读性,我会提取逻辑的功能,如:

def lookup_between_tags(lines, starttag, endtag): 
    should_yield = False 
    for line in lines: 
     if starttag in line: 
      should_yield = True 
     elif endtag in line: 
      should_yield = False 
     if should_yield: 
      yield line 

使用的事实,一个打开的文件是可迭代的,它可以用来像:

with open('Bigtextdoc.txt') as bigtextdoc: 
    for line in lookup_between_tags(bigtextdoc, 'Foo', 'Bar'): 
     print(line) 
+0

很好的解决方案。如果只有1个'endtag',你可以用'return' –

+0

停止迭代。 –