5

次のような Cc ヘッダー フィールドのプレーン テキストがあります。

friend@email.com, John Smith <john.smith@email.com>,"Smith, Jane" <jane.smith@uconn.edu>

これを適切に解析するための戦闘テスト済みのモジュールはありますか?

(Pythonの場合のボーナス!メールモジュールは、分割する方法なしで生のテキストを返すだけです、AFAIK)(名前とアドレスをフィールドに分割する場合もボーナス)

4

4 に答える 4

17

標準の Python モジュールとして利用できる関数がたくさんありますが、 email.utils.parseaddr()またはemail.utils.getaddresses( )を探していると思います。

>>> addresses = 'friend@email.com, John Smith <john.smith@email.com>,"Smith, Jane" <jane.smith@uconn.edu>'
>>> email.utils.getaddresses([addresses])
[('', 'friend@email.com'), ('John Smith', 'john.smith@email.com'), ('Smith, Jane', 'jane.smith@uconn.edu')]
于 2011-03-24T23:35:01.887 に答える
0

複数の電子メール文字列を辞書に変換します (名前が含まれる複数の電子メールを 1 つの文字列に変換します)。

emailstring = 'Friends <friend@email.com>, John Smith <john.smith@email.com>,"Smith" <jane.smith@uconn.edu>'

文字列をコンマで分割

email_list = emailstring.split(',')

name をキー、email を値にして辞書を作成します。

email_dict = dict(map(lambda x: email.utils.parseaddr(x), email_list))

このような結果:

{'John Smith': 'john.smith@email.com', 'Friends': 'friend@email.com', 'Smith': 'jane.smith@uconn.edu'}

ノート:

異なる電子メール ID を持つ同じ名前がある場合、1 つのレコードはスキップされます。

'Friends <friend@email.com>, John Smith <john.smith@email.com>,"Smith" <jane.smith@uconn.edu>, Friends <friend_co@email.com>'

「フレンズ」が2回複製されます。

于 2015-07-21T07:28:21.733 に答える
0

私自身は使用していませんが、csvパッケージを使用してデータを簡単に解析できるようです。

于 2011-03-24T23:34:20.743 に答える