我得到如下的 boolean 表达式:
string = '!True && !(True || False || True)'
我知道 eval('1+2') 返回 3。但是当我执行 eval(string) 时,它会抛出错误,因为语法无效。
有没有其他方法可以执行上面的表达式?
请您参考如下方法:
!、&& 和 || 都不是有效的 Python 运算符; eval() 只能处理有效的 Python 表达式。
您必须用有效的 Python 版本替换这些表达式;大概!是not,&&是and,||是或,所以您可以只用Python版本替换它们:
eval(string.replace('&&', 'and').replace('||', 'or').replace('!', 'not '))
注意 not 之后的空格,因为 Python 需要这个。
更好的方法是不要对这些运算符使用错误的拼写(它们看起来像 Java、JavaScript 或 C)。
