我正在尝试读取嵌套列表的字符串表示形式,并将其转换为python中的嵌套列表。我尝试了以下方法:
l=input("enter nested list")
result=eval(l)
,输入为[[1],[2]]
结果是我刚输入的字符串,因此如果我print(l[0])
的结果是'['
。
任何援助将不胜感激。
答案 0 :(得分:1)
eval
是不安全的,因为它不对输入内容执行任何 background 检查。请改用内置模块literal_eval
中的ast
。您可以编写:
from ast import literal_eval as leval
l = '[[1],[2]]'
result = leval(l)
print(result) # -> [[1], [2]]
print(result[0]) # -> [1]
如@ bro-grammer所指出的那样,您的代码存在问题,是您假设eval
是就地运行 ,而您却是在eval(l)
{{1} }被修改。 那不是它的工作方式。 l
返回其结果,并将其分配给代码中的eval
。尝试改用result
,您会看到。
答案 1 :(得分:1)
您不能使用eval
,而只能使用exec
。无需导入任何模块。
l = input("Enter nested list: ")
exec('result = '+l)
print(result)
print(result[0])
测试:
Enter nested list: [[1],[2]]
[[1], [2]]
[1]