正则表达式过滤掉“>”和email.message_from_string中的“= 20”

时间:2012-11-15 00:19:19

标签: python regex encoding mime

我想编写一个正则表达式来过滤掉我在下面的Python脚本中通过imaplib和电子邮件模块引入的电子邮件中的所有垃圾。我认为正则表达式是最好的,但可以随意提出更好的解决方案。知道为什么电子邮件文本在下面的单词 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.
> >>>>

2 个答案:

答案 0 :(得分: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)表示正则表达式为multiline顺便说一句。

答案 1 :(得分:1)

如果您的邮件符合以下正则表达式,请过滤掉:

         ^>=\d$

  if not (re.match('^>=\d$', emailMessage)):
    print emailMessage.get_payload():