我有一个像
这样的字符串str_sample = "[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]"
我目前正在使用:
exec("str2list_sample = "+ str_sample)
有没有更清洁的做法?
答案 0 :(得分:5)
首先,不要为变量str
命名,因为它会影响内置变量。
要解决您的问题,您可以使用ast.literal_eval
>>> a = "[[1, 2], [2.0, 0.3], ['a', 'b']]"
>>> import ast
>>> ast.literal_eval(a)
[[1, 2], [2.0, 0.3], ['a', 'b']]
解决您最新的修改
>>> str_sample = "[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]"
>>> ast.literal_eval(str_sample)
[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]
答案 1 :(得分:2)
使用eval
,但这不是good practice
eval("[[1, 2], [2.0, 0.3], ['a', 'b']]")
[[1, 2], [2.0, 0.3], ['a', 'b']]