我有一个看起来像列表的字符串:
activeStateString = "['11', '20', '0']"
Run Code Online (Sandbox Code Playgroud)
我想将其定义为Python中的列表.我知道我可以开始过滤并拆分它并重建一个新列表但是我必须进入循环等.在Python中是否有办法将字符串从"字符串"直接提升到列表?所以一旦转换:
activeStateString -> activeStateList
Run Code Online (Sandbox Code Playgroud)
我明白了:
11
Run Code Online (Sandbox Code Playgroud)
对于:
print activeStateList[0]
Run Code Online (Sandbox Code Playgroud)
谢谢
(Python 2.6)
使用ast.literal_eval()解释包含了Python文字字符串:
>>> import ast
>>> ast.literal_eval("['11', '20', '0']")
['11', '20', '0']
Run Code Online (Sandbox Code Playgroud)
使用eval()它会更安全,因为它会拒绝解释任何不是字面值的东西:
>>> eval("__import__('sys').version")
'2.7.5 (default, Oct 28 2013, 20:45:48) \n[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)]'
>>> ast.literal_eval("__import__('sys').version")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/ast.py", line 79, in _convert
raise ValueError('malformed string')
ValueError: malformed string
Run Code Online (Sandbox Code Playgroud)