2013-05-07 110 views
0

字符串转换使用这样到包含一个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列表。

回答

8
import ast 
ast.literal_eval(data) 

或者你可以从查询中使用json.load如果它就像对象的文件直接加载(尝试,如果你可以从文件中直接加载)或json.loads如果它是一个字符串

import json 
json.loads(query) 
+0

打我它几秒钟。 :)这确实是最好的解决方案。 – 2013-05-07 07:19:05

+0

+1这很快。 – 2013-05-07 07:19:44

+0

'json.load(s)'不起作用。我得到''str'对象没有属性'read'' – working4coins 2013-05-07 07:25:00

相关问题