2015-03-25 129 views
-1

我得到布尔表达式如下图所示:如何使用eval()评估python字符串布尔表达式?

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

我知道eval('1+2')回报3。但是当我执行eval(string)时,它在我的无效语法中抛出错误。

有没有其他方法可以执行上述表达式?

+3

python不使用'&&'和'||' - 你想'''''',''''不''。 – georg 2015-03-25 10:18:14

+1

'!True'是无效的Python。 Python中不存在'!'运算符,而是使用'not'。 – 2015-03-25 10:19:23

回答

1

没有!,&&||是有效的Python操作符; eval()只能处理有效的Python表达式。

您必须用有效的Python版本替换这些表达式;想必!not&&and,并||or,所以你可以只是取代那些用Python版本:not

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

注意的空间,因为Python的需要这一点。

更好的方法是不对这些运算符使用错误的拼写(它们看起来像Java或JavaScript或C)。