Python:在包含模式行的模式后打印x行

时间:2018-09-11 18:59:56

标签: python printing glob

如果文件中的一行以数字(xyz开头,则需要打印(或写入文件)此行以及接下来的xyz+1行。
最好的方法是什么?

到目前为止,我已经能够打印以int开头的行。如何打印下几行?

import glob, os, sys
import subprocess

file = 'filename.txt'
with open(file,'r') as f:
    data = f.readlines()
for line in data:
    if line[0].isdigit():
       print int(line)

如果我使用data做一个迭代器,则打印功能每次都会跳过一行。

with open(file,'r') as f:
   data = f.readlines()
x = iter(data)
for line in x:
    if line[0].isdigit():
       print int(line)
       for i in range(int(line)):
          print x.next()   

如何让它停止跳过行?

1 个答案:

答案 0 :(得分:0)

使用一个标志,当您发现该行时将其设置为true,然后使用它来写所有以后的行:

can_write = False
with open('source.txt') as f, open('destination.txt', 'w') as fw:
    for line in f:
        if line.startswith(xyz):
            can_write = True
        if can_write:
            fw.write(line)
相关问题