Python: печатать x строк после шаблона, включая строку с шаблоном

Если строка в файле начинается с числа (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()   

Как я могу заставить его перестать пропускать строки?


person nac001    schedule 11.09.2018    source источник
comment
что ты уже испробовал? Мы здесь, чтобы помочь, когда вы застряли, а не просто написать весь код для вас...   -  person lkriener    schedule 11.09.2018
comment
Добро пожаловать в СО. Пожалуйста, найдите время, чтобы прочитать Как спросить и другие ссылки на этой странице. Голосование за закрытие: слишком широкое.   -  person wwii    schedule 11.09.2018
comment
@lkriener посмотри   -  person nac001    schedule 11.09.2018
comment
Можете ли вы предположить, что ничего, кроме цифры xyz, в строке не пишется? В противном случае int(line), который вы используете несколько раз, потерпит неудачу.   -  person lkriener    schedule 12.09.2018


Ответы (1)


Используйте флаг, когда вы найдете строку, установите для нее значение 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)
person nosklo    schedule 11.09.2018