Как извлечь определенную часть текстового файла?

#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)