从电子邮件线程中删除,到cc

时间:2016-10-19 05:19:00

标签: python python-2.7 nltk

我正在尝试使用python中的nltk库从电子邮件中过滤/删除“from:”,“to:”,“cc:”。 有没有办法做到这一点。 PS:我是python的新手

这是邮件的主题

你好,

一些文字

谢谢,

姓名和详情

姓名和详情

From:xxx //这里我不想读这个字段

发送时间:2016年3月24日星期四上午11:20 //这里我不想读这个字段

收件人:yyy.com //这里我不想读这个字段

主题:一些文字

你好,

一些文字

谢谢!

姓名和详情

来自:某个名字//这里我不想读这个字段

发送时间:2016年3月4日星期五下午2:40 //这里我不想读这个字段

收件人:yyy.com //这里我不想读这个字段

主题:一些文字

嘿,

一些文字

1 个答案:

答案 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格式显示。