为名称和电子邮件解析小字符串?

时间:2011-06-02 02:53:00

标签: python email

我有一个字符串:

John Smith <jsmith@gmail.com>

我想得到两个变量:

姓名(John Smith)和电子邮件(jsmith@gmail.com)

我该怎么做?

感谢您的帮助!

1 个答案:

答案 0 :(得分:18)

有许多形式的有效互联网电子邮件地址比您可能意识到的要多。我建议使用别人的代码来解析它们,比如email.utils.parseaddr

例如,以下是有效地址:

"Rocky J. Squirrel" <rocky.squirrel@gmail.com>

此处,名称为Rocky J. Squirrel,而非"Rocky J. Squirrel"

以下也是合法的语法,并定期显示在邮件标题中(注意缺少&lt;&gt;分隔符):

rocky.squirrel@gmail.com (Rocky J. Squirrel)

虽然parens中的部分在技术上只是一个“注释”,但大多数邮件客户端将其解释为用户的名称。 (Python的email.utils.parseaddr也是如此。)

要实际进行解析(节省您阅读文档):

>>> import email.utils
>>> email.utils.parseaddr("John Smith <jsmith@gmail.com>")
('John Smith', 'jsmith@gmail.com')