我有一个包含随机数整数的文件,整数可以按空格分隔,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循环概括为一个程序,该程序检查要使用哪两个。 任何指示都非常感谢。
答案 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