如何pandas解析之前保存的json

时间:2015-09-07 18:59:02

标签: python json pandas

我已将pandas数据帧保存到csv中,并将其读回。但我观察到json数据如下所示:

"[{u'f1': 1000, u'f2': 500}]"

我注意到使用json.loads不起作用。有没有人可以帮忙回答为什么

  1. 它已将u放在每个字段名称前面
  2. 引号已交换,因为我进行了实验,发现只有json.loads('[{"f1": 1000}]')有效,而不是json.loads("[{'f1': 1000}]")json.loads('[{"f1": 1000}]')

1 个答案:

答案 0 :(得分:2)

那不是JSON。那是Python 2的字面语法。

您可以使用ast.literal_eval() function

将其作为Python文字再次加载
>>> 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使用uTrue,JSON将Falsetrue的内容缩小,而JSON中的falseNone