3 回答

TA贡献1868条经验 获得超4个赞
您可以使用ast.literal_eval:
>>> import ast
>>> strs = "['SING', 'Dance'],['Talk', 'Scream'],['Run', 'Walk']"
>>> ast.literal_eval("[" + strs + "]")
[['SING', 'Dance'], ['Talk', 'Scream'], ['Run', 'Walk']]

TA贡献1812条经验 获得超5个赞
>>> eval("['SING', 'Dance'],['Talk', 'Scream'],['Run', 'Walk']")
>>> (['SING', 'Dance'], ['Talk', 'Scream'], ['Run', 'Walk'])
>>>
>>> list(eval("['SING', 'Dance'],['Talk', 'Scream'],['Run', 'Walk']"))
>>> [['SING', 'Dance'], ['Talk', 'Scream'], ['Run', 'Walk']]
为什么eval("'a',2,[12,'bb']")回('a', 2, [12, 'bb'])虽然没有(前面也没有)在评估字符串的结尾?
我们必须考虑当解释器遇到被评估的表达式作为表达式的正确部分时该如何执行,该表达式从该表达式中进行解压缩。
解释器执行以下行时(其中没有括号)
x,y,z = 'a',2,[12,'bb']
执行的操作是:
-对右侧部分进行评估, eval("'a',2,[12,'bb']")并创建一个元组
-对左侧部分进行评估
-在左侧元组中拆解右侧元组
添加回答
举报