1-line regex用于汇总txt文件中的数字

时间:2016-03-23 01:58:23

标签: python regex

刚开始学习python并想知道如何用正则表达式和列表压缩来总结txt文件中的所有数字。

我写了以下但不确定如何避免在findall搜索中添加空列表中的数字:

import re

print (sum([int(num[0]) for num[0] in re.findall('[0-9]+', open('xxx.txt').read().split())]))

2 个答案:

答案 0 :(得分:0)

您不需要拆分输入数据,因为re.findall应该在fileobj.read()上运行。并且在迭代re.findall的结果列表时,也不要在中间变量上指定索引。

print (sum(int(num) for num in re.findall('[0-9]+', open('xxx.txt').read())))

答案 1 :(得分:0)

使用\d+,您将不会有空字符串。使用map,您可以将所有字符串转换为整数,然后将其与sum()相加。

print(sum(map(int, re.findall('\d+', open('xxx.txt').read()))))