2016-11-13 56 views
0

那麼,假設我有一個字符串s = '5 + 7'獲取字符串的結果?

是否有可能得到這個字符串的結果? (應該是12)

我試着使用int(s)但它會給一個錯誤

+0

將兩個數字字符串轉化爲實際數字,將它們添加。你可以把字符串賦給'eval',但是我甚至可能會建議這樣做。 – Carcigenicate

+0

該字符串可能是什麼類型的東西? –

+0

據我所知,字符串不能轉換爲整數,但整數可以轉換爲字符串。 –

回答

5

您正在尋找的eval:

>>> s = '5 + 7' 
>>> eval(s) 
12 

要小心,不要在不可信的代碼運行,因爲惡意方可以使用它來在您的系統上運行任意代碼。例如,如果用戶可以使s等於"__import__('os').execve('/bin/sh',[],{})",那麼eval(s)將爲您的計算機提供用戶shell。

+0

將: 如果'進口'不在s和'os'不在s: 保護我(作爲用戶)? @Adam Van Prooyen – Anonymous

2

這樣做(而不是eval()功能)的安全方式是使用ast庫:

import ast 

ast.literal_eval('5 + 7') 
# -> 12 
+0

這不適用於ast.literal_eval('5 * 2') – Anonymous

+0

@匿名:你說得對。我不知道爲什麼... –

+0

答案在這裏:http://stackoverflow.com/a/40584448/1513933 –