如何在不使用Python中的eval()的情况下将String转换为List

joh*_*ohn -2 python

我想将以下字符串转换为列表而不在python中使用eval.

"[['age', '>=', 30], ['age', '<', 36]]"
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

['age', '>=', 30] >> list position -[0] 
['age', '<', 36]  >> list position -[1]
Run Code Online (Sandbox Code Playgroud)

Imp*_*ity 5

试试ast.literal_eval():

import ast
x = ast.literal_eval("[['age', '>=', 30], ['age', '<', 36]]")
print x
print type(x)
Run Code Online (Sandbox Code Playgroud)

运行此脚本显示:

[['age', '>=', 30], ['age', '<', 36]]
<type 'list'>
Run Code Online (Sandbox Code Playgroud)

ast.literal_eval()是一种安全性eval(),它只评估字符串,列表,元组,数字和布尔值等字面值.

资料来源:http://docs.python.org/dev/library/ast.html#ast.literal_eval