Python: печать x строк после шаблона, включая строку с шаблоном - PullRequest
0 голосов
/ 11 сентября 2018

Если строка начинается с числа (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 голосов
/ 11 сентября 2018

Используйте флаг, когда вы обнаружите, что строка установлена ​​в значение 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)
...