2014-02-21 4 views
0

뭐죠 "M의"를하기 전에 모든 숫자 값을 SUM 가장 빠른 & 쉬운 방법 "I의"이 다음 문자열 : 우리가 20M, 1I이 그래서 여기 "1S20M1I9M2D120M", 9M ko 및 120M은 150이 될 것입니다. 파이썬에서 이것을 계산하는 가장 쉬운 방법은 무엇입니까? 왜냐하면 나는 (+ 15000에 이르는 모든 다른 종류의 값을 가진) 같은 문자열을 + 50000 갖고 있기 때문에 쉬운 방법을 알 수 없다.파이썬 문자열 조작 (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

감사를 사용! 완벽하게 :) – 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