Mar*_*kum 79 python string list
我有一个看起来与列表相同的字符串,让我们说:
fruits = "['apple', 'orange', 'banana']"
Run Code Online (Sandbox Code Playgroud)
将它转换为列表对象的方法是什么?
fra*_*xel 108
>>> fruits = "['apple', 'orange', 'banana']"
>>> import ast
>>> fruits = ast.literal_eval(fruits)
>>> fruits
['apple', 'orange', 'banana']
>>> fruits[1]
'orange'
Run Code Online (Sandbox Code Playgroud)
正如评论中指出的,ast.literal_eval是安全的.来自文档:
安全地评估表达式节点或包含Python表达式的字符串.提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.
这可以用于安全地评估包含来自不可信来源的Python表达式的字符串,而无需自己解析值.
Ósc*_*pez 25
一个简单的电话eval()
会做:
fruits = eval("['apple', 'orange', 'banana']")
fruits
> ['apple', 'orange', 'banana']
Run Code Online (Sandbox Code Playgroud)
或者正如本文中所解释的那样,可以更安全地完成相同的操作(意思是:不会产生意外的副作用或恶意代码注入的风险),如下所示:
fruits = eval("['apple', 'orange', 'banana']", {'__builtins__':None}, {})
Run Code Online (Sandbox Code Playgroud)
该解决方案具有不依赖于附加模块的优点.