3 回答

TA貢獻1868條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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'])雖然沒有(前面也沒有)在評估字符串的結(jié)尾?
我們必須考慮當解釋器遇到被評估的表達式作為表達式的正確部分時該如何執(zhí)行,該表達式從該表達式中進行解壓縮。
解釋器執(zhí)行以下行時(其中沒有括號)
x,y,z = 'a',2,[12,'bb']
執(zhí)行的操作是:
-對右側(cè)部分進行評估, eval("'a',2,[12,'bb']")并創(chuàng)建一個元組
-對左側(cè)部分進行評估
-在左側(cè)元組中拆解右側(cè)元組
添加回答
舉報