#python
#python
Вопрос:
Я работаю с несколькими текстовыми файлами и хочу извлечь все заметки из файлов и распечатать их в другой выходной текстовый файл. Текстовый файл, который я читаю, выглядит примерно следующим образом:
This is the first line of the text file
Second Line
Third Line
Note 1: Warning, there seems to be an error..............
continuation line of Note 1.
Note 2: Another warning, blah blah...............
continuation line of Note 2
Note 3: Third warning, fix this issue immediately..............
continuation line of Note 3.
This is the end of the text file
Я хочу извлечь только те строки, в которых есть примечания. Все файлы имеют разные строки, предшествующие разделу заметок, но всегда имеют This is the end of the text file
строку после заметок. Мой подход заключается в следующем:
input_file = open('input.txt', 'r')
fh = open('output.txt', 'w')
for line in my_file:
if line.startswith('Note'):
fh.write(line)
Этот подход захватывает только строки, начинающиеся с ‘Note’. Но я хочу иметь возможность извлекать все строки всех заметок.
Комментарии:
1. Как вы узнаете, что принадлежит заметке? Т. е. когда заканчивается заметка?
2. Примечания могут быть случайными. Но, как я уже сказал, как только заметки заканчиваются, появляется пустая строка и
This is the end of the text file
строка сразу под ней. Я думал об использовании регулярных выражений сNote
в качестве начального шаблона иThis is the end of the text file
в качестве шаблона остановки.
Ответ №1:
Если каждая заметка заканчивается пустой строкой, вы могли бы сделать что-то вроде этого:
in_note = False
for line in my_file:
if line.startswith('Note'):
in_note = True
elif line.strip() == '':
in_note = False
if in_note:
fh.write(line)