簡體   English   中英

如何使用 eval() 評估 python 字符串布爾表達式?

[英]How to evaluate python string boolean expression using eval()?

我得到如下布爾表達式:

string = '!True && !(True || False || True)'

我知道eval('1+2')返回3 但是當我執行eval(string)它以無效的語法向我拋出錯誤。

有沒有其他方法可以執行上述表達式?

一個都沒有! , &&|| 是有效的 Python 運算符; eval()只能處理有效的 Python 表達式。

您必須用有效的 Python 版本替換這些表達式; 大概! not , &&and , 和|| or ,所以你可以用 Python 版本替換它們:

eval(string.replace('&&', 'and').replace('||', 'or').replace('!', 'not '))

注意后面的空格not因為 Python 需要這個。

更好的方法是不要對這些運算符使用錯誤的拼寫(它們看起來像 Java、JavaScript 或 C)。

如果您想解析布爾邏輯(與控制流相反),請查看此 stackoverflow 帖子 它提到了pyparsing

pyparsing 模塊是創建和執行簡單語法的另一種方法

同情

SymPy 的邏輯模塊允許使用符號和布爾值來形成和操作邏輯表達式。

似乎還有一個用 pyparsing 實現解析器

當然你也可以自己寫一個解析器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM