2015-03-25 139 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)。