用'\ x'替换=然后在python中解码

ale*_*der 7 python decode utf-8 backslash

我使用python模块获取了电子邮件消息的主题并收到了字符串

'=D8=B3=D9=84=D8=A7=D9=85_=DA=A9=D8=AC=D8=A7=D8=A6=DB=8C?=' 
Run Code Online (Sandbox Code Playgroud)

我知道字符串是以'utf-8'编码的.Python有一个方法调用字符串来解码这些字符串.但是要使用我需要=\x字符串替换符号的方法.通过手动交换,然后打印解码后的结果字符串,我得到字符串سلام_کجائی这正是我想要的.问题是如何自动进行交换?答案似乎比简单地使用像replace函数这样的字符串上的函数更难.

下面我带了手动操作后使用的代码?

r='\xD8\xB3\xD9\x84\xD8\xA7\xD9\x85_\xDA\xA9\xD8\xAC\xD8\xA7\xD8\xA6\xDB\x8C'
print r.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

我很感激任何可行的想法.

Pav*_*sov 8

只需从quoted-printable解码它以获取utf8编码的字节串:

In [35]: s = '=D8=B3=D9=84=D8=A7=D9=85_=DA=A9=D8=AC=D8=A7=D8=A6=DB=8C?='
In [36]: s.decode('quoted-printable')
Out[36]: '\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85_\xda\xa9\xd8\xac\xd8\xa7\xd8\xa6\xdb\x8c?'
Run Code Online (Sandbox Code Playgroud)

然后,如果需要,从utf-8到unicode:

In [37]: s.decode('quoted-printable').decode('utf8')
Out[37]: u'\u0633\u0644\u0627\u0645_\u06a9\u062c\u0627\u0626\u06cc?'
Run Code Online (Sandbox Code Playgroud)

 

In [39]: print s.decode('quoted-printable')
????_??????
Run Code Online (Sandbox Code Playgroud)