Python email.header.decode_headers()抛出HeaderParseError

Python email.header.decode_headers()抛出HeaderParseError,python,email,email-headers,Python,Email,Email Headers,我正在尝试解码电子邮件主题标题 我正在这样做(正则表达式用于在两个='s之间添加一个空格: header = '=?iso-8859-1?B?TU9UT1IubmwgbmlldXdzYnJpZWYgPiBOaWV1d2UgdmVya29vcHRvcHBl?==?iso-8859-1?B?ciBTdXp1a2kg?=' header = re.sub(r"(==)(?!$)", u"\0= =", header) email.header.decode_header(header) 但这会让人感

我正在尝试解码电子邮件主题标题

我正在这样做(正则表达式用于在两个='s之间添加一个空格:

header = '=?iso-8859-1?B?TU9UT1IubmwgbmlldXdzYnJpZWYgPiBOaWV1d2UgdmVya29vcHRvcHBl?==?iso-8859-1?B?ciBTdXp1a2kg?='
header = re.sub(r"(==)(?!$)", u"\0= =", header)
email.header.decode_header(header)
但这会让人感到头晕:

HeaderParseError                          Traceback (most recent call last)

/home/leon/<ipython console> in <module>()

/usr/lib/python2.7/email/header.pyc in decode_header(header)
    106                         # now we throw the lower level exception away but
    107                         # when/if we get exception chaining, we'll preserve it.
--> 108                         raise HeaderParseError
    109                 if dec is None:
    110                     dec = encoded
它起作用了


因此,我猜re.sub()的编码可能有问题,但我不知道如何解决这个问题。

在示例中,RFC2047标记之间缺少一个空间,这不起作用。但是,您试图修复它的尝试也是不正确的;您应该用
u“==”
,而不是
u”\0=“
替换它


如果您能够找到这些错误的来源并加以纠正,而不是试图在事后根据对您的数据应该是什么的好猜测进行修复,那会更好。

此解决方法已经存在于问题中。:)问题是,为什么会发生这种情况?表面上的变通方法中的
\0
是不正确的。将更新我的回复。谢谢!就这样!我在某处找到了正则表达式,我以为\0是用于组引用之类的。标题是。您试图解析的所有电子邮件都会发生这种情况吗,还是只是一些?实际的原始页眉部分看起来如何?当您读取标题时,可能会丢失一条换行符(标记之间)?
email.header.decode_header('=?iso-8859-1?B?TU9UT1IubmwgbmlldXdzYnJpZWYgPiBOaWV1d2UgdmVya29vcHRvcHBl?= =?iso-8859-1?B?ciBTdXp1a2kg?=')