我发起了一个JSON请求,得到了一个使用Unicode字符编码的字符串,看起来像这样:
s = "\u003Cp\u003E"
我希望将它转换为:
s = "<p>"
在Python中,最好的方法是什么?
注意,这与这个问题相同,只不过是在Python而不是Ruby中。我还使用了Posterous API。
我发起了一个JSON请求,得到了一个使用Unicode字符编码的字符串,看起来像这样:
s = "\u003Cp\u003E"
我希望将它转换为:
s = "<p>"
在Python中,最好的方法是什么?
注意,这与这个问题相同,只不过是在Python而不是Ruby中。我还使用了Posterous API。
如果数据来自JSON,那么json
模块应该已经为您解码了这些转义字符:
>>> import json
>>> json.loads('"\u003Cp\u003E"')
u'<p>'
>>> "\\u003Cp\\u003E".decode('unicode-escape')
u'<p>'
编辑:原问题“使用Python取消转义字符串中的字符”没有澄清字符串是要被写入还是要被读取(后来添加了“JSON响应”一词,以澄清意图是读取)。
因此,我回答了相反的问题:如何将JSON序列化数据写入未转义的字符串中(而不是从字符串加载数据)。
我的用例是从自己的数据字典生成JSON文件,但该文件包含已转义的非ASCII字符。所以我像这样做:
with open(filename,'w') as jsonfile:
jsonstr = json.dumps(myDictionary, ensure_ascii=False)
print(jsonstr) # to screen
jsonfile.write(jsonstr) # to file
ensure_ascii
为真(默认值),输出将保证对所有输入的非ASCII字符进行转义。如果ensure_ascii
为假,则这些字符将按原样输出。
unicode-escape
对于超出基本多文种平面(JS/JSON存储为代理项,但Python可能不是)的字符可能会返回错误的结果。 - bobince