在python中汇总文件中的整数

时间:2017-11-12 15:46:18

标签: python for-loop sum text-files

我有一个包含随机数整数的文件,整数可以按空格分隔,tab by ocbreak by linebreak。即 textfile.txt包含

sourcemap-istanbul-instrumenter-loader

我知道如何从仅包含换行符分隔的整数的文件求和

12 34 55     22 (tab)
3
5
6
7 13

并从一行(由空格或制表符分隔)汇总

f=open('txtfile.txt')
sum = 0
for i in f:
        sum += int(i)

在textfile.txt的第一行运行它会返回123。

我遇到麻烦的是将这两者合并为由两个换行符和空格和制表符分隔的求和整数。

我希望程序做的是在包含多于1个整数的行上使用lineum程序,否则我想使用linebreak sum程序。 但是我有问题将两个for循环概括为一个程序,该程序检查要使用哪两个。 任何指示都非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用python的re模块来汇总文件中的所有数字:

In [1]: import re

In [2]: text = open('input_file.txt').read() # Read from file

In [3]: text
Out[3]: '12 34 55     22 (tab)\n3\n5\n6\n7 13\n'


In [4]: list_numbers = re.findall('\d+', text) # Extract all numbers using the regex '\d+', which matches one, or more consecutive digits

In [5]: list_numbers
Out[5]: ['12', '34', '55', '22', '3', '5', '6', '7', '13']

In [6]: sum([int(number) for number in list_numbers]) # Find the sum of all the numbers
Out[6]: 157

正则表达式匹配使用反驳 - refiddle demo