我试图将一个充满复杂条件的文档解析为一个逻辑字典
eval()有帮助,但我遇到了一个问题,当它涉及到物质条件(->;)(Python中不支持)
我确信有一个现有的算法可以正确地打破这些条件,并以正确的逻辑方式计算出每个子条件(这就是我计划更改“A->;在发送到eval()之前,从“B”到“非(A)或B”)
我在搜索时找不到任何有用的东西,希望能有所发现
例如:
变量(代码):
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.. }
我以前也做过类似的练习,下面是我要做的
第一件事是找出哪些操作不能通过eval解决。您提到了“->;”运算符,似乎还有大括号中的列表,而不是方括号中的列表 e、 g
对于“->;”运算符,则需要获取左操作数和右操作数,并将它们放入“not(A)| | B”中。问题在于A或B是否是括号内的表达式,可能是嵌套的。为此,您需要循环遍历左侧(对于A)和右侧(对于B)的每个字符,并存储表达式,直到找到相应的右括号。然后,您可以解决这些问题,然后在中替换它们
相关问题 更多 >
编程相关推荐