在Python中解码unicode字符串变量

时间:2018-12-04 15:09:26

标签: python python-2.7 unicode python-unicode

我正在Python v2.7中使用API​​来获取字符串,其内容未知。内容可以是英语,德语或法语。分配给返回字符串的变量名称为“ category”。变量类别的返回值的示例是:-

"temp\\u00eate de poussi\\u00e8res"

在上述情况下,我曾尝试category.decode('utf-8')将字符串解码为法语,但是很遗憾,它仍返回相同的值,当我打印{时,会在开头添加一个unicode'u'。 {1}}。

category.decode('utf-8')

我也尝试过u'"temp\\u00eate de poussi\\u00e8res' ,但是它返回的值相同(减去字符串前面的'u':-

category.encode('utf-8')

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我认为您在字符串中使用文字斜杠,而不是unicode字符。

也就是说,\u00eaê的unicode转义编码,但是\\u00ea实际上是一个斜杠(转义),两个零和两个字母。

类似于引号,您的第一个和最后一个字符是文字​​双引号"

您可以使用以下命令将这些斜杠加代码点转换为其等效字符:

x = '"temp\\u00eate de poussi\\u00e8res"'
d = x.decode("unicode_escape")
print d

输出为:

"tempête de poussières"

请注意,要查看正确的国际字符,您必须使用打印。相反,如果您只是在交互式Python Shell中编写d,则会得到:

 u'"temp\xeate de poussi\xe8res"'

其中\xea\u00ea等效,这是ê的转义序列。

如有必要,请保留引号;-)。

答案 1 :(得分:1)

该API似乎使用JSON。您可以使用json模块对其进行解码:

>>> import json
>>> json.loads('"temp\\u00eate de poussi\\u00e8res"')
u'temp\xeate de poussi\xe8res'
>>> print(json.loads('"temp\\u00eate de poussi\\u00e8res"'))
tempête de poussières