如何从电子邮件中解析德语升麻和其他特殊字符

时间:2016-10-27 20:43:36

标签: python email parsing encoding character-encoding

我正在尝试使用python的email - 模块解析一封电子邮件,其中Parser() - 子模块提供了email.utils

但是,有些特殊字符我无法正确解析/转换。

这是我到目前为止的脚本:

import sys
import email
from email.parser import Parser

full_msg = Parser().parse(sys.stdin)
msg = full_msg  # this ugly line is part of former debugging

sender = msg['from']
to = msg['to']
subject = msg['subject']
body = msg.get_payload()
date = msg['Date']


fname = '{}.txt'.format(date)
with open(fname, 'w') as f:
    f.write('{:10}{}\n'.format('Von:', sender))
    f.write('{:10}{}\n'.format('An:', to))
    f.write('{:10}{}\n'.format('Betreff:', subject))
    f.write('{}\n'.format(body))

由于我正在解析国际邮件和德国邮件,我必须处理所谓的“上变换”(äüö)以及其他一些字符,例如{ {1}}和省略号(ß)。

所以例如像

这样的身体
...

得到

Würde Dürfte Könnte

的主题
W=C3=BCrde D=C3=BCrfte K=C3=B6nnte=

变为

Das dürfte jetzt klappen

有没有办法处理那些编码/解码问题?我错过了什么?

更新1:

系统的语言版本。编码设置为=?utf-8?Q?Das_d=C3=BCrfte_jetzt_klappen?= 。我通过重新配置可用的区域设置将其更改为en_US.UTF-8。但是,这根本没有改变输出。 de_DE.UTF-8给出:

locale

更新2:

我发现这种类型的字符串格式称为Quoted-printable。有一个名为quopri的Python模块来处理这种格式,但我无法获得令人满意的结果。但是,我使用MailParser切换到JavaScript,它就像一个魅力。

0 个答案:

没有答案