或者另一种方式问我想是否有一个文字可以将literal_eval等同于范围函数(不将整个数组作为范围发送)。
下列
import ast
ast.literal_eval("range(0,3)")
ast.literal_eval("[0, 1, 2, 3][0:3]")
Run Code Online (Sandbox Code Playgroud)
结果是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "/usr/lib64/python2.7/ast.py", line 79, in _convert
raise ValueError('malformed string')
ValueError: malformed string
Run Code Online (Sandbox Code Playgroud)
虽然这是可能的,但它将整个数组转换为字符串然后返回,这并不理想。我希望在没有初始列表的情况下使用 [0:3] 语法。
>>> ast.literal_eval(str(range(0,3)))
[0, 1, 2]
Run Code Online (Sandbox Code Playgroud) python ×1