正则表达式,求和

时间:2016-03-02 04:56:52

标签: python regex python-2.7

我正在解决一个问题,即对文本文件中的所有数字求和。我已经解决了,但我知道我可以更多地整合代码。

x = re.findall('[0-9]+',opened.read())
x = [int(i) for i in x]
print sum(x)

我想做这样的事,但我不知道:

print sum([int(i) for i in re.findall('[0-9]+',opened.read())])

谢谢!

1 个答案:

答案 0 :(得分:1)

你大部分都在那里。您可以删除括号(sum生成器表达式而不使用中间list),您可以使用map(理想情况下为Py3 map来避免中间list })为了简洁/性能(只有一个性能增益,因为int是一个用C实现的内置函数;通常map更慢):

# genexpr
print sum(int(i) for i in re.findall(r'\d+', opened.read()))
# Or with finditer to avoid intermediate list
print sum(int(m.group()) for m in re.finditer(r'\d+', opened.read()))

# map
from future_builtins import map  # Only on Py2

print sum(map(int, re.findall(r'\d+', opened.read())))