Python 什么可以代替ast模块?

Python 什么可以代替ast模块?,python,json,abstract-syntax-tree,evaluate,python-2.4,Python,Json,Abstract Syntax Tree,Evaluate,Python 2.4,在我的项目中,我评估json数据以提取信息。代码如下: conn = httplib.HTTPConnection(host) conn.request("GET", "/done_json.php") r = conn.getresponse() data = r.read() tmp = ast.literal_eval(data) list = [] for a in tmp.keys(): list.append(tmp[a]) 如何将其更改为与Python 2.4兼容 我的

在我的项目中,我评估json数据以提取信息。代码如下:

conn = httplib.HTTPConnection(host)
conn.request("GET", "/done_json.php")
r = conn.getresponse()
data = r.read()
tmp = ast.literal_eval(data)
list = []
for a in tmp.keys():
    list.append(tmp[a])
如何将其更改为与Python 2.4兼容


我的json示例:


{'key_64':{'size3':'cndcrncdf3fy09xl7uubccptye4h7ybg1i5milnbw172bmhvi.png','id':'cndcrncdf3fy09xl7uubccptye4h7ybg1i5milnbw172bmhvi','size2':'size1':'http://dev.geco.com/site/2/CNDCRNCDF3FY09XL7UUBCBCPTYE4H7YBG1I5MILNBW172BMHVI.png“},'键_65':{'size3':'CNDCRNEHLW2XFFCC90PDE77EEJHJF6RC3R8PEVUACB0C34H330.png','id':'CNDCRNEHLW2XFFCC90PDE77EEJHJF6RC3R8PEVUACB0C34H330'(…)
不要使用
ast.literal\u eval
,这对作业来说无论如何都是错误的。使用
simplejson.load(r)
(或者在较新版本中使用标准模块代替simplejson)


ast.literal\u eval设计用于评估Python文本。JSON基本相同,但不完全相同(true/false/null而不是true/false/None)。

不要使用
ast.literal\u eval
,不管怎样,这对作业来说都是错误的。使用
simplejson.load(r)
(或者在较新版本中使用标准JSON模块而不是simplejson)


ast.literal\u eval设计用于评估Python文本。JSON基本相同,但不完全相同(true/false/null而不是true/false/None)。

问题是返回的JSON是字符串。因此,运行JSON.load(data)会给出:
AttributeError:'str'对象没有属性“read”
。使用
JSON.load(r)
,使用r(response)对象,它确实有一个读取方法。或者如果确实需要单独获取字符串,可以执行
json.loads(data)
(注意s)。simplejson.loads(data)给出了相反的结果:
ValueError:需要属性名:第1行第2列(char 2)
,所以我应该在这里使用一些正则表达式?@DevAno1:“所以我应该在这里使用一些正则表达式?”不。您应该获得符合JSON规范的正确JSON。如果没有,您可以尝试使用
replace()
替换为
。问题是返回的JSON是一个字符串。因此运行JSON.load(data)给出:
AttributeError:“str”对象没有属性“read”
。您可以将
json.load(r)
与r(response)对象一起使用,r(response)对象具有读取方法。如果确实需要单独获取字符串,您也可以执行
json.load(data)
(注意s)。simplejson.load(data)相反地给出:
ValueError:应为属性名:第1行第2列(char 2)
所以我应该在这里使用一些正则表达式?@DevAno1:“所以我应该在这里使用一些正则表达式?”否。您应该获得符合JSON规范的正确JSON。如果失败,您可以尝试使用
replace()
'
替换为
”。