[英]How to convert “\uxxxx\uxxxx” to u'\Uxxxxxxxx'?
[英]ast.literal_eval will convert unicode code point from \uxxxx to \\uxxxx, how to avoid?
例如,这是处理此json文件的代码
json.loads(u"\"{\\\"title\\\": \\\"\\\\u5927\\\"}\"")
json.loads会将其转换为unicode字符串,请参见下文
{"title": "\u5927"}
这是处理Unicode字符串的代码
ast.literal_eval(json.loads(u"\"{\\\"title\\\": \\\"\\\\u5927\\\"}\""))
ast.literal_eval会将其转换为字典,请参见下文
{'title': '\\u5927'}
但是我想要的是一本内容如下的字典
{'title': '\u5927'}
json.loads("{\\"title\\": \\"\\\大\\"}")
将返回字典,因此您根本不需要ast.literal_eval
。
d = json.loads("{\"title\": \"\\u5927\"}")
print d
{u'title': u'\u5927'}
type(d)
Out[2]: dict
有关将json.loads()
json转换为python的完整json.loads()
,请参见this 。
如果您试图解析文件,请使用不带s的 json.load()
,如下所示:
with open('your-file.json') as f:
# you can change the encoding to the one you need
print json.load(f, encoding='utf-8')
测试:
from io import StringIO
s = StringIO(u"{\"title\": \"\\u5927\"}")
print json.load(s)
{u'title': u'\u5927'}
OP完全改变了应该解析json的内容,这是另一种解决方案,请再次解析json:
json.loads(json.loads(u"\"{\\\"title\\\": \\\"\\\\u5927\\\"}\""))
Out[6]: {u'title': u'\u5927'}
这是因为第一个json.loads
将字符串(非json)转换为json字符串,再次使用json.loads
解析将最终json.loads
进行反序列化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.