将字符串表达式转换为数学表达式?

奥利维尔

我正在寻找将数学表达式字符串作为输入并通过在其上加上括号来更改它的东西。

举些例子 :

输入1: "2*4^7"

输出1: "(2*(4^7))"

输入2: "sin(x)*3-8^9"

输出2: "((sin(x)*3)-(8^9))"

输入3: "(2-8)/6"

输出3: "((2-8)/6)"

我目前正在尝试对其进行编码,但是这花费了太多时间,我宁愿专注于其他事情,因此,如果你们知道某个模块可以做到这一点,那就太好了。

我正在使用python 3

谢谢!

L3viathan

使用该ast模块,您可以解析您的字符串,然后遍历它以构建所需的字符串表示形式:

import ast

def represent(tree):
    t = type(tree)
    if t == ast.Module:
        return represent(tree.body)
    elif t == list:
        # arithmetic expression should only be one thing
        return ", ".join(represent(part) for part in tree)
    elif t == ast.Expr:
        return represent(tree.value)
    elif t == ast.BinOp:
        o = type(tree.op)
        if o == ast.BitXor:
            op = "^"
        elif o == ast.Mult:
            op = "*"
        elif o == ast.Add:
            op = "+"
        ...
        return "({}{}{})".format(
                represent(tree.left),
                op,
                represent(tree.right),
                )
    elif t == ast.Num:
        return str(tree.n)
    elif t == ast.Name:
        return tree.id
    elif t == ast.Call:
        return "{}({})".format(
                represent(tree.func),
                represent(tree.args),
                )
    ...

# prints (((sin(x)*2)*x)+4)
print(represent(ast.parse("sin(x)*2*x+4")))

正如@ user2357112在注释中指出的那样,只有当您限制自己使用Python的表达式语法(最重要的是使用**而不是^用于取幂)时,此方法才有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将for循环转换为将concat字符串转换为lambda表达式

如何将字符串类型的算术表达式转换为整数?

如何将字符串转换为lambda表达式?

不使用正则表达式将字符串转换为映射

不使用正则表达式将字符串转换为映射

将已编译的正则表达式转换为字符串

正则表达式:将数字字符串从camelCase转换为正则

是否可以仅使用lambda表达式将字符串转换为int []?

将Elm表达式转换为字符串

将字符串转换为列表的正则表达式(Python)

将字符串转换为可执行表达式PHP?

将表达式字符串转换为引用表达式

将字符串表达式转换为实际的工作实例表达式

无法使用SSIS中的表达式将字符串转换为DateTime

如何将字符串转换为python(Generator表达式)中的嵌套字典?

将plotmath字符串替换为表达式

如何将字符串转换为代数表达式

将正则表达式字符串转换为URL

将NCalc表达式转换为字符串

将RGB字符串转换为RGBa字符串的正则表达式

将正则表达式的空白字符从列表转换为字符串

将字符串转换为 SymPy 表达式?

在java中将字符串转换为表达式

使用正则表达式将数字转换为特定字符串

将表达式谓词的左侧转换为字符串

我可以将正则表达式的结果转换为新字符串吗?

将 docplex 表达式转换为字符串

如何在php中将数学表达式转换为字符串?

将数学表达式转换为 Ruby 中的字符串