我试图解析表格中的行:
(OP something something (OP something something ) ) ( OP something something )
其中 OP 是逻辑门(AND、OR、NOT)的符号,而某些东西是我想要评估的东西。
我正在寻找的输出类似于:
{ 'OPERATOR': [condition1, condition2, .. , conditionN] }
条件本身可以是字典/列表对本身(嵌套条件)。到目前为止,我尝试了类似的东西:
tree = dict()
cond = list()
tree[OP] = cond
for string in conditions:
self.counter += 1
if string.startswith('('):
try:
OP = string[1]
except IndexError:
OP = 'AND'
finally:
if OP == '?':
OP = 'OR'
elif OP == '!':
OP = 'N'
# Recurse
cond.append(self.parse_conditions(conditions[self.counter:], OP))
break
elif not string.endswith(")"):
cond.append(string)
else:
return tree
return tree
我也尝试了其他方法,但我无法理解整个递归的事情,所以我想知道我是否可以在这里得到一些指示,我环顾网络,发现了一些关于递归下降解析的东西,但是教程都在尝试做一些比我需要的更复杂的事情。
PS:我意识到我可以使用现有的 python 库来做到这一点,但我会通过这样做学到什么嗯?