Python 解析电子邮件头的文本Cc字段的方法?

Python 解析电子邮件头的文本Cc字段的方法?,python,parsing,email,email-headers,Python,Parsing,Email,Email Headers,我有一个Cc头字段的纯文本,如下所示: friend@email.com约翰·史密斯,“史密斯,简” 是否有任何经过战斗测试的模块可以正确解析此内容 (如果是python的话,那就有好处了!电子邮件模块只返回原始文本,没有任何拆分方法,AFAIK) (如果它将名称和地址拆分为多个字段,也会带来额外的好处)我自己没有使用过它,但在我看来,您可以非常轻松地使用该包来解析数据。作为标准python模块,有很多函数可用,但我认为您正在寻找 或 >>地址=”friend@email.com约翰·史密斯

我有一个Cc头字段的纯文本,如下所示:


friend@email.com约翰·史密斯,“史密斯,简”

是否有任何经过战斗测试的模块可以正确解析此内容

(如果是python的话,那就有好处了!电子邮件模块只返回原始文本,没有任何拆分方法,AFAIK)
(如果它将名称和地址拆分为多个字段,也会带来额外的好处)

我自己没有使用过它,但在我看来,您可以非常轻松地使用该包来解析数据。

作为标准python模块,有很多函数可用,但我认为您正在寻找 或

>>地址=”friend@email.com约翰·史密斯,“史密斯,简”
>>>email.utils.getaddresses([地址])
[('', 'friend@email.com),(约翰·史密斯,约翰。smith@email.com例如:史密斯,简,简。smith@uconn.edu')]
下面的吼声完全没有必要。在意识到可以传递一个包含多个地址的单个字符串的列表之前,我编写了它

我还没有机会查看电子邮件标题中地址的规范,但根据您提供的字符串,这段代码应该可以将其拆分为一个列表,确保在引号内(因此是名称的一部分)忽略逗号


我很想看看其他人会如何处理这个问题

将中的多个电子邮件字符串转换为字典(将中有名称的多个电子邮件转换为一个字符串)

结果如下:

{'John Smith': 'john.smith@email.com', 'Friends': 'friend@email.com', 'Smith': 'jane.smith@uconn.edu'}
注意:

{'John Smith': 'john.smith@email.com', 'Friends': 'friend@email.com', 'Smith': 'jane.smith@uconn.edu'}
如果有相同的名称和不同的电子邮件id,则跳过一条记录

'Friends <friend@email.com>, John Smith <john.smith@email.com>,"Smith" <jane.smith@uconn.edu>, Friends <friend_co@email.com>'
“朋友,约翰·史密斯,”史密斯,“朋友”

“Friends”是重复的2次。

这些模块工作得很好,但它们都要求您已经将您的地址拆分为单独的字符串。
[email.utils.parseaddr(a)for a in m.split(',')]
其中
alist
是您在上面发布的地址列表。是的,我在发布后想到了这一点。对
email.utils.getaddresses()
文档进行了进一步的阅读和仔细的重读,发现您需要传递一个列表,而不是一个字符串!所以使用
email.utils.parseaddr([alist])
Oh
getaddresses()
不需要字符串列表。。您只需向它传递一个列表,其中包含一个包含多个地址的字符串。我现在觉得自己很蠢……哈哈,你应该对兴趣和学习新东西感到聪明:-)我上面的描述不清楚,我想……解析器需要处理名称中有逗号的地址-例如“Smith,Jane”,因为这是电子邮件地址的有效名称。emailstring.split(',')命令将“Smith,Jane”名称拆分为两个单独的地址。
emailstring = 'Friends <friend@email.com>, John Smith <john.smith@email.com>,"Smith" <jane.smith@uconn.edu>'
email_dict = dict(map(lambda x: email.utils.parseaddr(x), email_list))
{'John Smith': 'john.smith@email.com', 'Friends': 'friend@email.com', 'Smith': 'jane.smith@uconn.edu'}
'Friends <friend@email.com>, John Smith <john.smith@email.com>,"Smith" <jane.smith@uconn.edu>, Friends <friend_co@email.com>'