相关疑难解决方法(0)

ValueError:使用ast.literal_eval时格式错误的字符串

众所周知,使用eval()是一种潜在的安全风险,因此ast.literal_eval(node_or_string)促进了使用

但是在python 2.7中,它ValueError: malformed string在运行此示例时返回:

>>> ast.literal_eval("4 + 9")
Run Code Online (Sandbox Code Playgroud)

而在python 3.3中,此示例按预期工作:

>>> ast.literal_eval('4+9')
13
Run Code Online (Sandbox Code Playgroud)

为什么它运行在python 3而不是python 2?如何在不使用冒险eval()功能的情况下在python 2.7中修复它?

python python-2.7 python-3.x

20
推荐指数
2
解决办法
1万
查看次数

为什么ast.literal_eval('5*7')会失败?

为什么文字评估5 * 7失败,而5 + 7不是?

import ast

print(ast.literal_eval('5 + 7'))
# -> 12

print(ast.literal_eval('5 * 7'))
# -> 
Traceback (most recent call last):
  ...
ValueError: malformed node or string: <_ast.BinOp object at ...>
Run Code Online (Sandbox Code Playgroud)

该文件没有解释这一点.

在SO上回答这个问题之后我发现了这个问题:得到一个字符串的结果.

python eval abstract-syntax-tree

8
推荐指数
2
解决办法
760
查看次数