- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当试图解析一个空字符串时,我得到一个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
时,您应该捕获 SyntaxError
和 ValueError
。
关于python - ast.literal_eval : SyntaxError: unexpected EOF while parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634925/
我正在使用 ast.literal_eval(str) 评估包含元组的字符串,例如 ('a', 'b', 'c')。然而,如果由于某种原因这个元组只包含一个元素,表达式将忽略括号并只返回元素: >>>
集合不可散列,因为它们是可变的。但是有没有办法仍然在 {1, 2, {3, 4}} 上使用literal_eval?我只想知道外部结构是一个集合,我不关心内部类型,但集合内的集合是可能的输入。 更新:
我已经从librosa库中提取了数据集。 This is top five data. These are the total columns. 这些数据为对象格式。 It has got '\n'
我正在使用 ast.literal_eval 将我从 json.loads() 收到的数据更改为 Python 字典;但是,如果我应该以一种完全不同的方式来解决这个问题 - 请随时指出这一点。 # A
目标:我想从下面的 request.POST 中提取 map 键中的 longlat 元组。 问题:我使用 ast.literal_eval 提取元组,但不知何故只返回第二个元组。 markers
ast.literal_eval() 是否适用于字典列表?对我来说,它给出了格式错误的字符串错误? [[u'ABN', u'12', u'', 2.69, u'222.222.222.222', u'
我收到格式错误的字符串错误。 这是我的测试 >>> eval("'Hello:: '+'fdsfds'") 'Hello:: fdsfds' >>> import ast >>> ast.litera
我在使用 ast.literal_eval() 时遇到了问题。在下面的示例中,我只想将字符串 (myText) 转换为字典。但是 ast.literal_eval() 尝试评估 并给我一个错误。我完全
这个问题在这里已经有了答案: can anyone tell me what i'm doing wrong? ast.literal_eval malformed node or string p
好吧... Unicode 字符串被编码为 Python 2.x 字符串(实际上是字节序列) Python 2.x 字符串被解码为 Unicode 字符串 Python UnicodeDecodeEr
运行 python 程序时出现以下错误。我使用的是 python 3.4,我已经安装了 Ferenda-0.1.7-py3.4,错误是: File "C:\Python34\lib\site-pack
我只是很好奇这是否存在风险,我想不出用户可能导致这种情况发生的方式......但这似乎令人担忧。 >>> import ast >>> help(ast.literal_eval) Help on f
我对相同的数据使用了 json dump 然后 json load。数据是 unicode 所以我把它转换成字符串。使用 ast.literla_eval 我试图获取要听写的字符串的类型,但出现错误
我是 python 的新手,尝试使用 ast.literal_eval 获取请求数据导致“语法无效”错误。 它打印我发送的数据,格式如下, 192.156.1.0,8181,database,admi
我有一个字符串 "{'datetime': datetime.datetime(2010, 11, 21, 0, 56, 58)}" 我想将其转换为它所代表的对象。使用 ast.literal_eva
我正在尝试从文件中读取元组的字符串表示形式,并将元组添加到列表中。这是相关代码。 raw_data = userfile.read().split('\n') for a in raw_data :
我遇到了这个代码并且它有效,但我不完全确定 何时使用 ast 和 是否存在性能问题当使用它而不是从 input() 获取字符串值时并将其转换为int。 import ast cyper_key = a
或者另一种方式来询问我想是否有一个文字将 literal_eval 转换为范围函数的等价物(不将整个数组作为范围发送)。 以下 import ast ast.literal_eval("range(0
假设我有一个文件 example.py: 导入示例 VVV = 2 DictionaryNameB = { 'a' : VVV, 'bb'
ast.literal_eval(node_or_string) 有什么已知的方法吗?的评估实际上并不安全? 如果是,是否有可用的补丁? (我已经知道 PyPy[sandbox],它可能更安全,但除非
我是一名优秀的程序员,十分优秀!