1

以下のPythonスクリプトで、imaplibおよびemailモジュールを介して取り込まれる電子メールからすべての迷惑メールを除外する正規表現を記述したいと思います。正規表現が最適だと思いますが、より良い解決策を自由に提案してください。電子メールのテキストが以下の単語be=tterに等しい理由はありますか?元のメールの方が優れています。

Pythonスニペット:

emailMessage = email.message_from_string
print emailMessage.get_payload():

テキストの印刷:

>=20
> >>>>
> >>>> Hope this makes it through you spam filter but couldn't think of a be=
tter subject.
> >>>>
4

2 に答える 2

4

Karl Knechtelがコメントで述べているように、メッセージはquoted-printableとしてエンコードされます。これをデコードするには、次を使用しますquopri.decodestring()

import quopri

decoded = quopri.decodestring(emailMessage.get_payload())

正規表現を使用して「ジャンク」文字を削除すると非効率になります。また、入力に新しい文字が表示されるたびに、コードを変更する必要があります。

>ただし、デコード後に各行の先頭の文字[およびそれらの間の空白]を失いたい場合、正規表現が妥当な解決策です。

import re

chevrons = re.compile("(?m)^[> ]*")
stripped = re.sub(chevrons, "", decoded)

(?m)ちなみに、正規表現が複数行であることを示します。

于 2012-11-15T01:05:24.930 に答える
1

メッセージが正規表現の下に一致する場合は、フィルターで除外します。

         ^>=\d$

すなわち

  if not (re.match('^>=\d$', emailMessage)):
    print emailMessage.get_payload():
于 2012-11-15T00:28:00.763 に答える