我有这样的字符串布尔查询
queryString= """And(
OR(abc,xyz,wxy),
AND(AND(xyz,wxy),xzy),
XOR(x1,y1, AND(xy,zz))
)"""
目前,我很难像我想的那样修改上面的查询字符串
XOR
中添加另一个OR(x3,y3)
OR(abc,xyz,wxy)
具有所需输出
resultQueryString= """And(
AND(AND(xyz,wxy),xzy),
XOR(x1,y1, AND(xy,zz),OR(x3,y3))
)"""
我想除非我为每个不同的查询提供一个复杂的正则表达式,否则我很难做到这一点。你知道吗
我正在尝试编写一个python函数,它将上面的字符串布尔查询作为输入并输出一个树数据结构。你知道吗
这样我就可以遍历树并计算或更改查询的任何部分。你知道吗
在上面的例子中,如果我把它作为一个树,我可以很容易地看到根是AND
,并遍历/修改其他分支等等。你知道吗
ast.parse
函数似乎几乎完全满足您的要求:(
.body[0].value
删除了两个毫无意义的抽象层,.dump
只用于输出。你知道吗下面是执行您对输出请求的转换的代码:
下面是以您的格式打印结果的代码,除了空格:(Python在它的
ast
模块中没有用于此目的的内置代码):因此,最终代码为:
Printer().visit(Filterer().visit(ast.parse(queryString)))
相关问题 更多 >
编程相关推荐