2017-08-03 17 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) 

私はヘッダが「foo」を含んでいた後、ラインを読むことができ、私は、データを移動する場合は=行の後にそれが唯一の「バー」

で始まるフッターの行を読み込みますendlookupラインならば

私はFooで始まり、Barで止める方法を知らないのですか?読みやすさのために

答えて

2

私のような機能のロジックを抽出します:

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

素敵な解決策:開かれたファイルが反復可能であることを利用して

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 

、それは次のように使用することができます。 'endtag'が1つしかない場合は、' return'で反復を止めることができます –

+0

正確で素敵なキャッチです。 –

関連する問題