Python 字符串操作(SUM 值)



下一个字符串中,对"M's"和"I's"之前的所有数值求和的最快和最简单的方法是什么:"1S20M1I9M2D120M",所以这里有20M,1I,9M en 120M.,这将是150。在 Python 中计算这个最简单的方法是什么?因为我有大约 +- 50000 个这样的字符串(所有不同类型的值范围从 1 - 150),而且我找不到一个简单的方法。

你可以为此使用正则表达式:

>>> 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

也使用 regex( 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

最新更新