解析字符串表达式

2024-05-19 01:07:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要解析一个包含表达式的字符串。语言是专有的,我不确定我是否知道完整的语法,但基本上示例表达式如下所示:

"some_name+(some_other_name * 4 * different_name)+ 'h40028"

有各种各样的名字,我已经举例说明了一些\的名字等上面,我需要替换为整数等效从我存储的字典。表达式的长度不受引用多少变量或数字的限制。你知道吗

然后我需要计算得到的表达式。语法允许空格和基本的数学运算符:+-*(可能是/

我对lexxer和解析器几乎一无所知,因此我正在寻找最简单的方法。你知道吗

谢谢!你知道吗


Tags: 字符串name语言示例字典表达式语法数字
2条回答

根据词典替换:

my_dict = {'Mark': 2, 'Susan': 1, 'Billy': 3}
strings = 'Mark + (Susan * 4 * Billy)'

for k, v in my_dict.items():
    strings = strings.replace(k, str(v))

print eval(strings)

为了解析一个等式,您可以使用^{}模块(为了使用eval的风险!!!)地址:

>>> import compiler
>>> eq="some_name+(some_other_name * 4 * different_name)+ h40028"
>>> ast= compiler.parse( eq )
>>> ast
Module(None, Stmt([Discard(Add((Add((Name('some_name'), Mul((Mul((Name('some_other_name'), Const(4))), Name('different_name'))))), Name('h40028'))))]))

相关问题 更多 >

    热门问题