2017-11-12 4 views
1

私は整数の乱数を含むファイルを持っています。整数はスペースで区切り、タブでは改行で区切ることができます。すなわち textfile.txtは、私は、改行で区切ら整数のみを含むファイルからPythonでファイル内の整数を合計する

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

及び(スペースまたはタブのいずれかで区切られた)ライン

からの加算を合計する方法を知っている

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

が含まれています

linesum = 0 
aa=f.readline() 
bb=aa.split() 

for el in bb: 
    nr = int(el) 
    linesum += nr 

これをtextfile.txtの1行目で実行すると、123が返されます。

どのような問題があるのか​​は、これらの両方を結合して、両方の行区切りと空白スペースとタブで区切られた整数を合計することです。

私がプログラムでやりたいことは、1以上の整数を含む行にlinesumプログラムを使用することです。そうでなければ、改行合計プログラムを使いたいと思います。 しかし、2つのfor-loopsを2つのうちのどちらを使用するかをチェックするプログラムに一般化することに問題があります。 どのような指示をいただければ幸いです。

+0

を正しい回答として、または他の説明が必要な場合は、既存の回答にコメントすることができます。 – GaneshTata

答えて

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使用してマッチ - 答えはあなたの問題を解決する助け場合は親切にそれをマークし、refiddle demo

関連する問題