Учитывая, что вы преобразовали все это в строки текста и предполагаете, что формат почты соответствует, например, поле From - начало нового электронного письма и конец тела последнего сообщения, а поле Subject - последний заголовок письма и начало. тела. Вы можете просто установить флаг в True, когда увидите строку темы, указывающую, что следующие строки - это тело. Затем установите этот флаг, когда увидите строку От, указывающую, что тело закончилось.
Тогда, когда флаг истинен и вы находитесь в теле, вы можете делать все, что захотите. В приведенном ниже примере кода я просто собираю все строки из тела письма (исключая пустые строки) в список. Затем я могу сделать то, что мне нравится, с этим списком, например, проверить его на наличие строк, которые утверждают.
import re
emails = """
From: Jerrmy Bret <jeremy.brett@mnop.com>
To: Jonathan Small <j.small@xyz.com>
Date: 21 Sep 2019
Subject: Stuff
FYI...
From: Keven Koster <keve.koster@mnop.com>
To: Jerrmy Bret <jeremy.brett@mnop.com>
Date: 21 Sep 2019
Subject: Approval Required for Travel
Can't Approve as Ruth's approval is required
From: Jerrmy Bret <jeremy.brett@mnop.com>
To: Keven Koster <keve.koster@mnop.com>
Date: 21 Sep 2019
Subject: Approval Required for Travel
ok thanks Keven, will talk to Ruth
"""
body = False
email_bodys = []
for line in emails.splitlines():
if not line:
continue
if line.startswith("From: "):
body = False
if body:
email_bodys.append(line)
if line.startswith("Subject: "):
body = True
print("email bodys detected in the text are:\n\t" + "\n\t".join(email_bodys))
print("text in body which contain approve:")
for email_body in email_bodys:
if re.findall(r'approve', email_body, re.I):
print("\t" + email_body)
ВЫХОД
email bodys detected in the text are:
FYI...
Can't Approve as Ruth's approval is required
ok thanks Keven, will talk to Ruth
text in body which contain approve:
Can't Approve as Ruth's approval is required