尝试解析JSON时的ValueError

时间:2014-05-08 16:53:01

标签: python json

我使用Python 3.4并且必须像这样解析JSON

[['A', 'B', 1.3750], ['X', 'Y', 0.7097]]

我尝试使用json模块,json.loads函数将其解析为python对象,但是我得到了

ValueError: Expecting value: line 1 column 3 (char 2)

那么,我该怎么做才能解析这个JSON?

3 个答案:

答案 0 :(得分:5)

JSON中的字符串需要双引号,而不是单引号。

将输入更改为使用Python 2.7解析:

[["A", "B", 1.3750], ["X", "Y", 0.7097]]

编辑:在看到您的评论后,您需要对从Web API接收的数据进行一些字符串操作(例如,用双引号替换所有单引号)使其成为有效的JSON。

答案 1 :(得分:0)

它是无效的json但有效的文字python你可以使用ast.literal_eval解析它

import ast
ast.literal_eval("[['A', 'B', 1.3750], ['X', 'Y', 0.7097]]")

答案 2 :(得分:0)

您有两个主要问题:

  • 根项目不是对象
  • 字符串用单引号分隔,而不是双引号。

如果您真的想将其解析为JSON,则必须先进行一些清理。例如:

import json

json_input = "[['A', 'B', 1.3750], ['X', 'Y', 0.7097]]"

print json.loads('{"value": %s}' % json_input.replace("'", '"') )['value']

这个问题是它非常脆弱,因为源可能发送类似"'"的东西,它会转换为''',这会导致问题。如果你在尝试解决这个问题的路上走得太远,你基本上就是在编写解析器了。