==============
aaaa
bbbb
cccc
id = 1111
some text here
some text here
==============
==============
ddddd
eeeee
fffff
id = 22222
some text here
some text here
==============
==============
ddddd
eeeee
fffff
id = 33333
some text here
some text here
==============
Мне нужно найти идентификатор = 2222 и получить полные строки между первым и последним шаблонами =======.
Примечание. Я не могу использовать точное количество строк после строки id = 2222, поскольку оно может различаться от файла к файлу.
Шаги программы:
- Сначала найдите строка с идентификатором = 2222.
- Перейти к первому вхождению строки ===== перед строкой с идентификатором = 2222.
Перейти к последнему вхождению строки ===== после строки id = 2222. - Распечатать все строки между шаблоном ===== между id = 2222 строка.
==============
ddddd
eeeee
fffff
id = 22222
some text here
some text here
==============
Как мне этого добиться? Я попробовал использовать ниже, но это не дало желаемого результата.
import re
START_PATTERN = '======='
END_PATTERN = '======='
with open('myfile') as file:
match = False
newfile = None
for line in file:
if re.match(START_PATTERN, line):
match = True
newfile = open('my_new_file.txt', 'w')
continue
elif re.match(END_PATTERN, line):
match = False
newfile.close()
continue
elif match:
newfile.write(line)
newfile.write('\n')
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-patterns