将复杂条件分解为子条件-Python

我正在尝试将充满复杂条件的文档解析为逻辑词典。

eval()有帮助,但在涉及材料条件(->)时遇到了麻烦(Python不支持)。

我敢肯定,现有一种算法可以正确地打破这些条件,并以正确的逻辑方式找出每个子条件(这就是我计划在发送前将“ A-> B”更改为“ not(A)或B”的地方)到eval())

我在搜索时找不到有用的东西,希望获得见识。

示例:

Vars(使用代码):

x = True
y = False
m = True
z = False
c = 3

File.txt:

(x && y) || m
(x || m) && (y || z)
((x && y) -> m) || z 
(c in {3,5}) && z

所需的输出:

dict = { '(x && y) || m': True,'(x || m) && (y || z)': False,etc.. }
wqs695932489 回答:将复杂条件分解为子条件-Python

我之前必须做类似的练习,所以这就是我要做的

第一件事是弄清楚用eval无法解决哪些操作。您提到了“->”运算符,似乎也有大括号而不是方括号的列表 例如

c in {3,5}

对于“->”运算符,您将需要获取左右操作数并将其放入“ not(A)|| B”中。问题将是如果A或B被括在括号中的表达式,则它们可能是嵌套的。为此,您将需要在每个字符的左侧(对于A)和右侧(对于B)循环并存储表达式,直到找到相应的右括号为止。然后,您可以解决这些问题,然后将其替换。

本文链接:https://www.f2er.com/3015614.html

大家都在问