2014-02-21 79 views
0

請告訴我來總結所有的數值前的「M的」並以最快的&最簡單的方法:「我的」在接下來的字符串:「1S20M1I9M2D120M」所以在這裏我們有20M,1I, 9M和120M。這將是150.在Python中計算這個最簡單的方法是什麼?因爲我有+ - 50000這樣的字符串(所有不同類型的值從1 - 150),我不能找出一個簡單的方法。Python的字符串操作(和值)

回答

1

您可以使用正則表達式是:

>>> import re 
>>> s = "1S20M1I9M2D120M" 
>>> sum(int(x) for x in re.findall(r'\d+(?=[MI])', s)) 
150 
>>> sum(int(m.group()) for m in re.finditer(r'\d+(?=[MI])', s)) 
150 
+0

謝謝!完美的工作:) – Coryza

0

而且使用正則表達式(re.split()

import re 

s = "1S20M1I9M2D120M" 
p = r'[MI]|\d+[SD]' 

result = sum(int(i) for i in re.split(p, s) if i) 
# re.split(p,s) => ['', '20', '1', '9', '', '120', ''] 
>>> print result 
150