Есть ли в Python встроенная библиотека, которая может анализировать доменную часть (если есть) адреса электронной почты? - PullRequest
0 голосов
/ 05 декабря 2018

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

>>> parseaddr('Bad Horse <bad.horse@example(no one expects the @-ish inquisition!).com')
('Bad Horse (no one expects the @-ish inquisition!)', 'bad.horse@example.com')

(Так хорошо, Python! Так хорошо!)

Однако это всего лишь строка:

>>> type(parseaddr('Bad Horse <bad.horse@example(no one expects the @-ish inquisition!).com')[-1])
<class 'str'>

В типичном случае я могу просто сделать .rsplit('@', maxsplit=1)[-1], чтобы получить домен.Но что, если я просто отправляю локальную почту без домена?

>>> parseaddr('Wayne <wayne>')[-1].rsplit('@', maxsplit=1)[-1]
'wayne'

Это не совсем то, что я хочу - я бы предпочел None или 'localhost'.

что-нибудь подобное входит в комплект батарей Python?

1 Ответ

0 голосов
/ 05 декабря 2018

Я пока не смог ничего найти, поэтому мой текущий подход - сделать небольшую корректировку:

try:
    domain = parseaddr('Wayne <wayne>')[-1].rsplit('@', maxsplit=1)[1]
except IndexError:
    # There was no '@' in the email address
    domain = None  # or 'localhost'

В отсутствие лучшего способа это работает и дает мне то, что мне нужно.

...