我已将 pandas 数据帧保存到 csv 中,并将其读回。但我观察到 json 数据变成如下所示:
"[{u'f1': 1000, u'f2': 500}]"
我注意到使用json.loads
不起作用。有谁可以帮忙回答一下原因
- 它已将
u
放在每个字段名称的前面 - 引号被交换了,因为我进行了实验,发现只有
json.loads('[{"f1": 1000}]')
有效,而json.loads("[ {'f1': 1000}]")
也不是json.loads('[{"f1": 1000}]')
最佳答案
这不是 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
字符串对象可以使用 '
或 "
(具体取决于内容)并具有 u
前缀。还有其他差异;Python 使用 True
和 False
,JSON 将它们小写为 true
和 false
,Python 中的 None
是 JSON 中的 null
。
关于python - 如何pandas解析之前保存的json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444650/