当前位置: 首页 > 面试题库 >

ast.literal_eval:SyntaxError:解析时出现意外的EOF

戚宏浚
2023-03-14
问题内容

当尝试解析一个空字符串时,我得到一个SyntaxError。为什么它引发与解析a不同的错误'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则将引发a
compile。另一方面,如果源字符串是一个有效的表达式(例如,变量名称,如foo),compile将成功,但literal_eval可能会失败,并显示ValueError

因此,在使用SyntaxErrorValueError时都应同时捕获literal_eval



 类似资料:
  • 问题内容: 运行这部分代码时出现错误。尝试了一些现有的解决方案,但都没有帮助 我总是收到这个错误 问题答案: 这意味着在完成所有代码块之前,已到达源代码的末尾。代码块以类似如下的语句开头,然后至少需要一行包含其中应包含的代码的行。 好像您在ipython控制台中逐行执行程序。这适用于单个语句,例如for循环,但不适用于代码块。请参见以下示例: 为避免此错误,您必须将整个代码块作为单个输入输入:

  • 问题内容: 更新:- 好像我必须提供返回XML的URL。这是-URL 解析xml时出现SAXParseException。我尝试解析的xml如下- 我用来解析此xml的代码如下- 我正在使用相同的代码来解析其他xml数据,并且可以正常工作。我无法理解此xml数据中的内容,这阻止了它正确地解析数据。我也在线检查了许多xml验证程序的xml。 我一定在这里想念一些明显的东西。 编辑:- 我正在尝试解析

  • 问题内容: 我在解析简单的JSON字符串时遇到问题。我已经在JSONLint上检查了它们,它表明它们是有效的。但是当我尝试使用jQuery替代方法解析它们时,出现了以下错误: 注意:我正在使用PHP 对字符串进行编码。 问题答案: 您的数据已经是一个对象。无需解析。javascript解释器已经为您解析了它。

  • 我所开发的ANTR4语法。在解析字符串期间 时间;25 10 * * *;' faccalc_minus1_cron.out.'yyyyMMdd。嗯;美国/New_York 我有以下错误 表达式中的字符无效!表达式:;'无效字符:;'无关输入“;”应为{“”,整数,“-”,“/”,“,”},缺少“;”“\uu”处的时区格式不正确:faccalc\u minus1 我不理解为什么,因为正则表达式规则

  • 我的ejs文件路径不工作。 SyntaxError:编译ejs时,C:\users\mikda\desktop\coltfull\section33\yelpcamp\v3\views\landing.ejs中出现意外的内标识“/” 如果上述错误没有帮助,您可能希望尝试ejs-lint:https://github.com/ryanzim/ejs-lint,或者,如果您打算创建一个异步函数,则将作