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

标签 python utf-8 decode backslash

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

'=D8=B3=D9=84=D8=A7=D9=85_=DA=A9=D8=AC=D8=A7=D8=A6=DB=8C?=' 

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

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

r='\xD8\xB3\xD9\x84\xD8\xA7\xD9\x85_\xDA\xA9\xD8\xAC\xD8\xA7\xD8\xA6\xDB\x8C'
print r.decode('utf-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?'

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

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

In [39]: print s.decode('quoted-printable')
سلام_کجائی?

关于python - 用 '\x' 替换 = 然后在 python 中解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604597/

相关文章:

python - 如何覆盖 Python 中的装饰方法?

python - 当我使用 windows 64bit 时 "win32"来自哪里

mysql - 向主键插入 utf-8 数据时出现重复条目

r - RStudio没有选择我告诉它在读取文件时使用的编码

python - 文件包含\u00c2\u00a0,转换为字符

c# - ASP.NET MVC 将原始 HTML 从 Controller 传递到 View

Python Pyx 绘图 : Using\mathbb in axes label of plot

python - scikit-learn 对不平衡数据进行欠采样以进行交叉验证

php - 文件名编码问题

mysql - 消息: Illegal string offset (decode JSON with codeigniter and mysql)