我有一个电子邮件通信pdf如下所示
Jerrmy Bret <jeremy.brett@mnop.com>
To: Jonathan Small <j.small@xyz.com>
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
目标:我想阅读邮件正文,即Can't Approve as Ruth's approval is required
。你知道吗
我目前的做法是:
我在用正则表达式。但首先整个pdf文件被转换成文本。我正在将它们转换为列表。你知道吗
txt = pdf_to_text(email) # let's assume there is a function that does the conversion jobs.
txt = txt.split('\n')
pat = re.compile(r'appro.*\,re.I)
extract_txt = [f for f in txt if pat.search(f)]
上面的代码生成如下列表:
['Approval', 'Approve','approval']
我想要的是只在邮件正文而不是主题部分运行regex。
一些假设:
我如何处理这个问题?确保只接收邮件内容的一种方法是确保在subject line
之后应用regex。
有什么线索吗?你知道吗
另外,我不能使用任何像IMAPlib这样的python电子邮件库。你知道吗
如果
Approve
/Approved
/Approval
是否在电子邮件的主题或正文中无关紧要,您可以这样做:如果有关系的话,你可以把
approval_regex
改成这样:假设您已将这些内容全部转换为文本行,并假设邮件格式是一致的,例如“发件人”字段是新电子邮件的开头和最后一封邮件正文的结尾,“主题”字段是邮件的最后一个标头和正文的开头。当您看到主题行指示下一行是主体时,您可以将标志设置为True。然后,当看到表示主体已结束的From行时,设置该标志。你知道吗
当旗子是真的,你在身体里,你可以做任何你想做的事。在下面的示例代码中,我只是将邮件正文中的所有行(不包括空行)收集到一个列表中。然后,我可以对该列表执行任何我喜欢的操作,例如检查它是否包含approve的行。你知道吗
输出
相关问题 更多 >
编程相关推荐