2014-04-15 39 views
0

我與蟒蛇3個工作,我想一個字符串轉換像轉換字符串 '2 * 2 * 3 * 5' 變成了一個Python整數3

「2 * 2 * 3 * 5'

到整數

2 * 2 * 3 * 5 = 60

我有很多的字典這樣的字符串,我需要使用它們作爲整數。有沒有快速的方法來做到這一點? 我已經習慣了使用拆分,但是我在做這件事時遇到了一些麻煩。

感謝您的答案。

+0

你應該**不要**使用'eval'。看看這個[類似的問題],而不是看看(類似的問題)(http://stackoverflow.com/questions/2371436/evaluating-a-mathematical-expression-in-a-string)。 – Nicolas

+0

另外,也許你可以爲你的字符串編寫一個簡單的解析器。你的表情比x * y * z更復雜嗎? – Nicolas

+2

* eval *不一定是壞事。當然,這取決於數據的來源。如果他們來自靜態的,仔細檢查的文件比沒有解決方案可以更有效。 –

回答

3

如果可以接受使用eval(即,您的數據必須特別小心,以防止代碼不需要執行檢查),你可以嘗試:

str = '2*2*3*5' 

print eval(str) 
+0

-1。由於沒有關於用戶或詞典來源的背景,暗示'eval'沒有任何警告是不負責任的。 –

+0

對。我編輯了我的答案。 –

2

如果你所有的表情都重複乘法,你可以這樣做(無評估):

>>> from functools import reduce 
>>> from operator import mul 
>>> reduce(mul, [int(term) for term in '2*2*3*5'.split('*')]) 
60 
相關問題