我已将pandas数据帧保存到csv中,并将其读回。但我观察到json数据如下所示:
"[{u'f1': 1000, u'f2': 500}]"
我注意到使用json.loads
不起作用。有没有人可以帮忙回答为什么
u
放在每个字段名称前面json.loads('[{"f1": 1000}]')
有效,而不是json.loads("[{'f1': 1000}]")
或json.loads('[{"f1": 1000}]')
答案 0 :(得分:2)
那不是JSON。那是Python 2的字面语法。
您可以使用ast.literal_eval()
function:
>>> import ast
>>> ast.literal_eval("[{u'f1': 1000, u'f2': 500}]")
[{u'f1': 1000, u'f2': 500}]
给你一个包含单个字典的Python列表;每个键都是一个unicode
字符串对象;因为密钥只使用ASCII字符,所以你也可以使用常规字符串作为密钥来解决这些问题:
>>> result = ast.literal_eval("[{u'f1': 1000, u'f2': 500}]")
>>> result[0]
{u'f1': 1000, u'f2': 500}
>>> result[0]['f1']
1000
JSON在字符串之前会使用双引号而不使用前缀,而Python unicode
字符串对象可以使用'
或"
(取决于内容)并具有{{1 }} 字首。还有其他差异; Python使用u
和True
,JSON将False
和true
的内容缩小,而JSON中的false
为None
。