在 Python 中验证表达式/中缀表达式

0 投票
1 回答
987 浏览
提问于 2025-04-16 21:49

我该如何在Python中验证一个表达式/中缀表达式?这可能吗?

比如说:

a-d*9
5-(a*0.3-d+(0.4-e))/k*5
(a-d*9)/(k-y-4.3*e)+(t-7*c)

1 个回答

2

如果你想要像Python那样的表达式,可以使用ast模块里的解析器,并检查是否有SyntaxError错误:

>>> ast.parse('5-(a*0.3-d+(0.4-e))/k*5')
<_ast.Module object at 0x7fc7bdd9e790>
>>> ast.parse('5-(a*0.3-d+(0.4-e))/k*')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/ast.py", line 37, in parse
    return compile(expr, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    5-(a*0.3-d+(0.4-e))/k*
                        ^
SyntaxError: unexpected EOF while parsing

不过,这样解析的内容可能会比你实际需要的多很多:

>>> ast.parse('def spam(): return "ham"')
<_ast.Module object at 0x7fc7bdd9e790>

所以你可能需要仔细查看返回的解析树。

撰写回答