我正在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')
有什么建议吗?
答案 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