如何从Python的email.Message对象的get_payload调用中移除换行符标记?
在一个测试工具中,我想确认某个标识符是否出现在一封电子邮件中。这封邮件是通过Python的内置方法email.message_from_file()从一个文件中解析出来的。
当我用get_payload方法获取邮件内容时,发现内容被分成了好几行,并且每行的末尾都有换行符标记(就是行末的=号)。不幸的是,我要找的那个标识符正好被分在了两行之间。
虽然我可以修改邮件的文本部分,以避免标识符被分开,但我更希望找到一个好的方法,把这些分开的行重新组合起来,恢复成原来的字符串。有没有人能推荐一个好的方法呢?
2 个回答
3
对于所有晚到的朋友: 使用 decode
标志来调用 get_payload 方法:
email.get_payload(decode=True)
这样可以正确地去掉行末的 =
符号,这些符号是用来表示行的延续的,只有在合适的头部 Content-Transfer-Encoding: quoted-printable
被设置时,它才会这样做。
1
>>> s = 'blah blah iden=\ntifier blah blah'
>>> print s
blah blah iden=
tifier blah blah
>>> s.replace('=\n', '')
'blah blah identifier blah blah'
>>> s.replace('=\n', '').find('identifier')
10
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。