Python 2.7 で、電子メール メッセージのRFC 5322準拠の「From:」フィールドを、表示名と電子メール アドレスの 2 つの部分に解析しようとしています (表示名は空である可能性があります)。おなじみの例は次のようなものです
John Smith <jsmith@example.org>
上記では、John Smith が表示名で、jsmith@example.org が電子メール アドレスです。ただし、以下も有効な "From: " フィールドです。
"unusual" <"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com>
この例では、display-name の戻り値は
"unusual"
と
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
メールアドレスです。
文法を使用して Perl でこれを解析できます (これらの質問で説明されているように: Using a regular expression to validate an email addressとThe recognizing power of “modern” regexes で説明されています) が、Python 2.7 でこれを実行したいと考えています。Python で email.parser モジュールを使用してみましたが、そのモジュールはコロンで区切られたフィールドしか分離できないようです。だから、あなたが何かをするなら
from email.parser import Parser
headers = Parser().parsestr('From: "John Smith" <jsmith@example.org>')
print headers['from']
それは戻ってきます
"John Smith" <jsmith@example.com>
上記のコードの最後の行を
print headers['display-name']
それは戻ってきます
None
提案やコメントをいただければ幸いです。