到包含一个python列表,列表
问题描述:
字符串转换使用这样到包含一个python列表,列表
[[1356912000, 13.391120000000, 13.509900000000, 13.391120000000, 13.509320000000, 41.088424560000, 555.033691727713, 13.508273867187],
[1356912900, 13.509320000000, 13.549990000000, 13.424280000000, 13.424420000000, 65.617187260000, 887.084786010319, 13.519091918636],
... ,
[1359589500, 19.750000000000, 19.783450000000, 19.700000000000, 19.700010000000, 171.512197650000, 3389.270172356359, 19.761102818312],
[1359590400, 19.700010000000, 19.783450000000, 19.700000000000, 19.700010000000, 161.142525670000, 3183.651205816806, 19.756741385179]]
的HTTP查询我得到的数据(如字符串)比方说,我们有存储在一个名为s
s = "[[1356912000, 13.391120000000, 13.509900000000, 13.391120000000, 13.509320000000, 41.088424560000, 555.033691727713, 13.508273867187], [1356912900, 13.509320000000, 13.549990000000, 13.424280000000, 13.424420000000, 65.617187260000, 887.084786010319, 13.519091918636], [1359589500, 19.750000000000, 19.783450000000, 19.700000000000, 19.700010000000, 171.512197650000, 3389.270172356359, 19.761102818312], [1359590400, 19.700010000000, 19.783450000000, 19.700000000000, 19.700010000000, 161.142525670000, 3183.651205816806, 19.756741385179]]"
我希望得到一个列表lst
包含数据
我的第一个想法是做
lst = eval(s)
所以我得到:
In [10]: lst
Out[10]:
[[1356912000,
13.39112,
13.5099,
13.39112,
13.50932,
41.08842456,
555.033691727713,
13.508273867187],
[1356912900,
13.50932,
13.54999,
13.42428,
13.42442,
65.61718726,
887.084786010319,
13.519091918636],
[1359589500,
19.75,
19.78345,
19.7,
19.70001,
171.51219765,
3389.270172356359,
19.761102818312],
[1359590400,
19.70001,
19.78345,
19.7,
19.70001,
161.14252567,
3183.651205816806,
19.756741385179]]
但我不喜欢这个......因为这是不安全。
如果网站返回类似
os.system('rm/-rf')
它可能是灾难性的!
所以我正在寻找一种安全的方式来将包含python列表的字符串转换为python列表。
答
import ast
ast.literal_eval(data)
或者你可以从查询中使用json.load
如果它就像对象的文件直接加载(尝试,如果你可以从文件中直接加载)或json.loads
如果它是一个字符串
import json
json.loads(query)
打我它几秒钟。 :)这确实是最好的解决方案。 – 2013-05-07 07:19:05
+1这很快。 – 2013-05-07 07:19:44
'json.load(s)'不起作用。我得到''str'对象没有属性'read'' – working4coins 2013-05-07 07:25:00