Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将已经看起来像列表的字符串转换为列表?_Python - Fatal编程技术网

Python 如何将已经看起来像列表的字符串转换为列表?

Python 如何将已经看起来像列表的字符串转换为列表?,python,Python,我有一个看起来像列表的字符串: activeStateString = "['11', '20', '0']" 我想用Python将其定义为一个列表。我知道我可以开始过滤并分解它,然后重新生成一个新列表,但我必须进入循环等。Python中有没有一种方法可以直接将该字符串从“字符串”提升到列表?因此,一旦转换后: activeStateString -> activeStateList 我得到: 11 用于: 谢谢 (Python 2.6)使用: 如果要将列表项转换为整数,请将int(

我有一个看起来像列表的字符串:

activeStateString = "['11', '20', '0']"
我想用Python将其定义为一个列表。我知道我可以开始过滤并分解它,然后重新生成一个新列表,但我必须进入循环等。Python中有没有一种方法可以直接将该字符串从“字符串”提升到列表?因此,一旦转换后:

activeStateString -> activeStateList
我得到:

11
用于:

谢谢

(Python 2.6)

使用:

如果要将列表项转换为整数,请将
int()
map
或列表理解一起使用:

>>> map(int, lst)
[11, 20, 0]
有关ast.literal\u eval的帮助:

>>> help(ast.literal_eval)
Help on function literal_eval in module ast:

literal_eval(node_or_string)
    Safely evaluate an expression node or a string containing a Python
    expression.  The string or node provided may only consist of the following
    Python literal structures: strings, numbers, tuples, lists, dicts, booleans,
    and None.
用于解释包含Python文本的字符串:

>>> import ast
>>> ast.literal_eval("['11', '20', '0']")
['11', '20', '0']
这比使用
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
>>>评估(“导入系统”)版本)
“2.7.5(默认值,2013年10月28日,20:45:48)\n[GCC 4.2.1(基于Apple Inc.build 5658)(LLVM build 2336.11.00)]”
>>>ast.literal\u eval(“\uuuuu import\uuuuuu('sys').version”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/ast.py”,第80行,以文本形式
返回\u转换(节点\u或字符串)
文件“/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/ast.py”,第79行,在
raise VALUERROR('格式错误的字符串')
ValueError:格式不正确的字符串

+1感谢您向
eval
提及差异。谢谢!那应该行!非常感谢你!我将研究“ast”。谢谢@Symbolx很高兴这有帮助。
>>> import ast
>>> ast.literal_eval("['11', '20', '0']")
['11', '20', '0']
>>> 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