例如,以下是处理此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'}
答案 0 :(得分:0)
json.loads("{\"title\": \"\\u5927\"}")
会返回字典,因此您根本不需要ast.literal_eval
。
d = json.loads("{\"title\": \"\\u5927\"}")
print d
{u'title': u'\u5927'}
type(d)
Out[2]: dict
对于完整的json.loads()
json到python的转换,请参阅this。
如果您正在尝试解析文件,请使用json.load()
而不使用 s ,如下所示:
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
解析它将最终反序列化它。