2014-02-21 3 views
0

Что самый быстрый & простой способ суммировать все числовые значения до «М» и «я» в следующем строке: «1S20M1I9M2D120M» так здесь мы имеем 20М, 1i, 9M en 120M., который будет 150. Самый простой способ подсчитать это в Python? Потому что у меня есть + 50000 таких строк (со всеми различными значениями от 1 до 150), и я не могу найти простой способ.Python строками (значения SUM)

ответ

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

Спасибо! Workt отлично :) – 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 
Смежные вопросы