如何开始在特定行读取文本并停止和特定行

时间:2017-08-03 13:29:09

标签: python-3.x lines

长时间听众第一次来电,我对此很新,所以请善待。

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

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'之后阅读这些行。如果我在if endlookup行之后移动data =行,它将仅从' Bar'

开始读取页脚中的行

我不知道如何从Foo开始并停留在Bar?

1 个答案:

答案 0 :(得分: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)