2017-08-03 79 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

停止迭代。 –