2016-12-15 21 views
0

我知道如何使用email.utils.parseaddr解析电子邮件地址,如python:一个预先存在的函数来解析一个电子邮件地址到一个三元组?

"Foo" <[email protected]>

为以下2元组:

('Foo', '[email protected]')

我也知道如何使用split()函数把地址部分到此元组:

('bar', 'quack.com')

但是我正在寻找它包含一个函数,它会解析地址到这个3元组预先存在的模块:

('Foo', 'bar', 'quack.com')

我可以平凡地写出这样的功能,而且我在很多场合都这么做过。但是我正在寻找的是一个已经存在的模块,它提供了一个已定义的函数,当给定任何电子邮件地址时,它将产生这样的三元组。

我一直没能找到这样的事情。任何人都可以指出我可能已经存在的东西吗?

非常感谢。

回答

0

如果它总是在相同的格式,你可以这样做:

>>> import re 
>>> s = '"Foo" <[email protected]>' 
>>> tuple([item.strip('"><') for item in re.split(r'\s|@', s)]) 
('Foo', 'bar', 'quack.com') 
+0

谢谢。是的,我已经在自己的手写代码中做了几乎相同的事情。我只是在寻找一个预先存在的软件包,我可以使用它来代替可能已经包含这种功能的email.util。 – HippoMan

+1

我认为最好使用双线程的def emlparse(addr):nam,addr = email.utils.parseaddr(addr); return(nam,* addr.split('@'))',因为这样可以正确处理其他格式,比如'[email protected](Foo)'。但是,这两个地址都会失败,并显示“lal @ la”@ example.com'这样的地址,这是[实际有效](https://en.wikipedia.org/wiki/Email_address#Examples)(注意引号)。 – Kundor

相关问题