Разобрать небольшую строку для имени и адреса электронной почты? - PullRequest
5 голосов
/ 02 июня 2011

У меня есть строка:

John Smith <jsmith@gmail.com>

Я хотел бы получить две переменные:

имя (Джон Смит) и адрес электронной почты (jsmith@gmail.com)

Как я могу это сделать?

Спасибо за помощь!

1 Ответ

18 голосов
/ 02 июня 2011

Существует больше форм действующего адреса электронной почты в Интернете, чем вы, вероятно, представляете. Я бы предложил использовать чужой код для их анализа, например email.utils.parseaddr .

Например, следующий действительный адрес:

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

Здесь имя Rocky J. Squirrel, а не "Rocky J. Squirrel".

Следующее также является допустимым синтаксисом и регулярно отображается в заголовках писем (обратите внимание на отсутствие разделителей <>):

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

Несмотря на то, что техническая часть в скобках является просто «комментарием», большинство почтовых клиентов интерпретируют ее как имя пользователя. (Так же как и электронная почта Python.utils.parseaddr.)

Чтобы действительно выполнить синтаксический анализ (спасая вас от чтения документов):

>>> import email.utils
>>> email.utils.parseaddr("John Smith <jsmith@gmail.com>")
('John Smith', 'jsmith@gmail.com')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...