我正在尝试使用python中的nltk库从电子邮件中过滤/删除“from:”,“to:”,“cc:”。 有没有办法做到这一点。 PS:我是python的新手
这是邮件的主题
你好,
一些文字
谢谢,
姓名和详情
姓名和详情
From:xxx //这里我不想读这个字段
发送时间:2016年3月24日星期四上午11:20 //这里我不想读这个字段
收件人:yyy.com //这里我不想读这个字段
主题:一些文字
你好,
一些文字
谢谢!
姓名和详情
来自:某个名字//这里我不想读这个字段
发送时间:2016年3月4日星期五下午2:40 //这里我不想读这个字段
收件人:yyy.com //这里我不想读这个字段
主题:一些文字
嘿,一些文字
答案 0 :(得分:1)
使用Python 3.5+,这非常简单。
from email import message_from_file # or message_from_bytes if you want that
with open(filename) as fh:
msg = message_from_file(fh)
del msg['from'], msg['to'], msg['cc']
back_to_bytes = msg.as_bytes()
这将简单地删除标题行,就好像它们从未存在过一样。特别是删除From:
标题是有问题的,但如果您不将结果消息反馈给实际处理电子邮件的任何内容,那应该不是问题。
NLTK没有任何关于电子邮件的内容,事实上,在您尝试使用NLTK处理正文部分之前,您可能需要了解有关电子邮件的更多信息。特别是,您应该了解multipart/alternative
消息部分的工作方式 - 您应该选择其中一个,并且可能通过某种格式化过滤器运行它(如果您选择HTML部分,则为HTML到文本,如果有的话,例如 - 如今许多邮件程序提供text/plain
部分,只需点击一个网址,其中实际内容在链接末尾以HTML格式显示。