我有这样的表情:
((6)) - (5 * ((((1))) + 1) * 6) - 4
和
((((((3))) - 5 * (((2))) * ((5)))))
有没有一种Python式的方法可以删除一些不必要的括号,使表达式看起来像:
6-(5 *(1+1) *6) -4 and
3-5 * (2*5)
我是Python新手,完全不确定如何做到这一点。谢谢
您可以使用
ast.parse
解析表达式,然后使用 ast.unparse
将其转换回简化的字符串。只要您尝试简化的表达式构成有效的 Python 代码,此操作就有效。
>>> ast.unparse(ast.parse("((6)) - (5 * ((((1))) + 1) * 6) - 4"))
'6 - 5 * (1 + 1) * 6 - 4'
>>> ast.unparse(ast.parse("((((((3))) - 5 * (((2))) * ((5)))))"))
'3 - 5 * 2 * 5'