嵌套結構,我有我目前使用像字符串轉換爲像列表
str_sample = "[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]"
的字符串:
exec("str2list_sample = "+ str_sample)
是否有這樣做的任何更簡潔的方法?
嵌套結構,我有我目前使用像字符串轉換爲像列表
str_sample = "[[1, 2], [2.0, 0.3], ['a', 'b', [None, (1, 3)], {'c': 'd'}]]"
的字符串:
exec("str2list_sample = "+ str_sample)
是否有這樣做的任何更簡潔的方法?
首先不要將變量的名稱命名爲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'}]]
使用eval
,但這不是一個good practice
eval("[[1, 2], [2.0, 0.3], ['a', 'b']]")
[[1, 2], [2.0, 0.3], ['a', 'b']]
我需要加載數百萬個列表。爲什麼這不是一個好習慣? –
使用eval是,Bhargav給出的答案相當不錯,'literal_eval'如果不是有效的數據類型會引發異常,但'eval'將評估所有python表達式,因此您需要確保輸入的內容eval不是危險的。 –
@NamitSingal在你未來的所有答案中,請添加一個鏈接到[this](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html)美麗的解釋,爲什麼'eval'不好。 –
@Gurupad我猜您現在可以停止向列表添加更多元素;) –
想要有一些基本的元素。 –