gpt4 book ai didi

python - 有没有办法用 ast.literal_eval 做 range()?

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:54 27 4
gpt4 key购买 nike

或者另一种方式来询问我想是否有一个文字将 literal_eval 转换为范围函数的等价物(不将整个数组作为范围发送)。

以下

import ast
ast.literal_eval("range(0,3)")
ast.literal_eval("[0, 1, 2, 3][0:3]")

结果:

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

虽然这是可能的,但它会将整个数组转换为字符串,然后再返回,这并不理想。我希望在没有初始列表的情况下使用 [0:3] 语法。

>>> ast.literal_eval(str(range(0,3)))
[0, 1, 2]

最佳答案

http://docs.python.org/library/ast.html#ast.literal_eval

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 - 有没有办法用 ast.literal_eval 做 range()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370270/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com