逐行读取文件,但从某点开始

时间:2019-06-05 13:15:24

标签: python-3.x file

我必须逐行读取文件,但是在出现匹配项后才开始打印它的比赛。假设匹配项为XXX

因此,如果我们有一个包含以下内容的文件

wdwdw
dwdww
XXX
DWDM
111

它应该显示DWDM和111

我尝试了以下方法。

file open('buffer.txt', 'r')
for line in file:
    if re.search('XXX'. line):
          print(line)

但是只打印一行。如何迫使它打印其余部分?

3 个答案:

答案 0 :(得分:1)

它仅打印匹配的行,这是正常的。尝试类似的事情:

with open('buffer.txt', 'r') as f:
    matched = False 
    for line in f:
        if matched:
            print(line)
        if re.search('XXX', line):
            matched = True
  

Why to prefer the use of with to open a file

答案 1 :(得分:0)

1)不要使用正则表达式进行简单搜索。
2)在with语句中打开文件。
3)只需创建一个布尔变量即可告诉您何时看到所需的行:

with open('buffer.txt', 'r') as f:
    start_printing = False
    for line in f.readlines():
        if start_printing:
            print(line)
        elif 'XXX' in line:
            start_printing = True

答案 2 :(得分:0)

file = open('buffer.txt', 'r')
found = False
for line in file:
    if not found:
        if re.search('XXX'. line):
              found = True
    else:
        print(line)