gpt4 book ai didi

python - 解析电子邮件中的 "Sent"行

转载 作者:行者123 更新时间:2023-12-01 03:21:54 28 4
gpt4 key购买 nike

我有一个大约 150 封电子邮件的文件夹,全部保存为 HTML 文件(Firefox 扩展),并且我需要捕获始终在“已发送”行中找到的年份;如下图所示。

enter image description here

我尝试使用 RegEx 但失败了;它根本不会打印任何结果,表明我的正则表达式不起作用。我尝试使用 email 模块中的 get_payload()message_from_string() 命令,但由于它是 HTML 文档,因此失败了。然后我尝试使用 BeautifulSoup 捕获整个电子邮件,然后仅解析“已发送”行,但由于未知原因失败了。我不是这些模块的专家,因此我们将不胜感激。

我尝试过的相关代码:

for filename in os.listdir(path):
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
html_ = open(file_path, 'r').read()
soup_ = BeautifulSoup(html, 'lxml')
pattern = re.compile(r'Sent:/s([/d]{4})')
txt = html.read()
dates = pattern.findall(txt)
if "Sent" in line:
print("Date:", ''.join(dates))

最佳答案

您的正则表达式(我认为斜杠只是一个拼写错误)与 Sent: 和年份之间的字符并不真正匹配。您可以将正则表达式修复为

r'Sent:.*?\b(\d{4})\b'

或者 - 考虑到 Sent 出现在行的开头:

r'(?m)^Sent:.*?\b(\d{4})\b'

详细信息:

  • (?m)^ - 行首
  • 已发送: - 文字字符序列
  • .*? - 除换行符之外的任何 0+ 个字符,尽可能少
  • \b(\d{4})\b - 由 4 位数字组成的整个单词(捕获到第 1 组中,因此作为 re.findall 的结果返回>.)

关于python - 解析电子邮件中的 "Sent"行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41836700/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com