Я хочу извлечь определенную часть письма из текстового файла с помощью Python.Начало и окончание помечаются четкими выражениями начала / конца (letter_begin / letter_end).Моя проблема заключается в том, что «запись» текста должна начинаться с самого первого появления любого элемента в списке letter_begin и заканчиваться самым последним элементом в списке letter_end (буфер +3 строки).Я хочу записать выходной текст в файл.Вот мой пример текста и мой код:
sample_text = """Some random text right here
.........
Dear Shareholders: We are pleased to provide this report to our shareholders and fellow shareholders. we thank you for your continued support.
Best regards,
Douglas - Director
Other random text in this lines """
letter_begin = ["dear", "to our shareholders", "fellow shareholders"]
letter_end = ["best regards", "respectfully submitted", "thank you for your continued support"]
with open(filename, 'r', encoding="utf-8") as infile, open(xyz.txt, mode = 'w', encoding="utf-8") as f:
text = infile.read()
lines = text.strip().split("\n")
target_start_idx = None
target_end_idx = None
for index, line in enumerate(lines):
line = line.lower()
if any(beg in line for beg in letter_begin):
target_start_idx = index
continue
if any(end in line for end in letter_end):
target_end_idx = index + 3
break
if target_start_idx is not None:
target = "\n".join(lines[target_start_idx : target_end_idx])
f.write(str(target))
мой желаемый результат должен быть:
output = "Dear Shareholders: We are pleased to provide this report to our shareholders and fellow shareholders. we thank you for your continued support.
Best regards,
Douglas - Director
"