gpt4 book ai didi

python - ast.literal_eval : SyntaxError: unexpected EOF while parsing

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:35 30 4
gpt4 key购买 nike

当试图解析一个空字符串时,我得到一个SyntaxError。为什么它会引发与解析 'foo' 不同的错误?在 ast.literal_eval 的源代码中,只有 ValueError 被显式引发。

In [1]: import ast

In [2]: ast.literal_eval('foo')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-d8695a7c4a9f> in <module>()
----> 1 ast.literal_eval('foo')

/usr/lib/python2.7/ast.pyc in literal_eval(node_or_string)
78 return left - right
79 raise ValueError('malformed string')
---> 80 return _convert(node_or_string)
81
82

/usr/lib/python2.7/ast.pyc in _convert(node)
77 else:
78 return left - right
---> 79 raise ValueError('malformed string')
80 return _convert(node_or_string)
81

ValueError: malformed string

In [3]: ast.literal_eval('')
File "<unknown>", line 0

^
SyntaxError: unexpected EOF while parsing

最佳答案

ast 使用compile 将源字符串(必须是表达式)编译成 AST。

如果源字符串不是有效的表达式(如空字符串),编译 将引发一个SyntaxError。另一方面,如果源字符串是一个有效的表达式(例如像 foo 这样的变量名),compile 将成功,但随后 literal_eval 可能会因 ValueError 而失败。

因此,在使用 literal_eval 时,您应该捕获 SyntaxErrorValueError

关于python - ast.literal_eval : SyntaxError: unexpected EOF while parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634925/

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