2017-06-09 6 views
-1

私はre.findall()を使ってテキストファイルからすべての数値を抽出し、forループを使って合計を計算しようとしています。私が最初に得たのはリストのリストだったので、それらを1つの全体リストに入れ、各数字を整数に変換しようとしました。しかし、私が得た答えは提供された答えとは異なります。誰かが自分のコードを見て、何か見落としていないかどうか確認できますか?テキストファイルへのリンクは次のとおりです。http://python-data.dr-chuck.net/regex_sum_376410.txt数値を抽出して正規表現を使用して和を返します

handle = open('regex_sum.txt','r') 
import re 

lst = list() 
for line in handle: 
    b = re.findall('[0-9]+', line) 
    if b: 
     lst.append(b) 

total = 0 

for numbers in lst: 
    for num in numbers: 
     c = int(num) 
     total = total + c 
print total 

P.S私は、私は別の答えを得た理由を理解しました。私のコードは、テキストファイルには存在しなかった '0、8、4、376410'の出力の始めにいくつかの無関係な数字を抽出しました。誰も私のコードを修正する方法を知っているので、これらの数字は再び表示されません。

+1

*どのように違いますか?生成されたリストを期待どおりにチェックしましたか? –

+1

期待される出力は何ですか?何を手に入れましたか? – MrJLP

+0

私は'814051 '、答えは' 629 'で終了すると仮定しています – Tokaalmighty

答えて

1

したがって、予想される回答が629で終了する場合は、appendextendに変更する必要があります(differenceを参照)。あなたが拡張している間に、結果をintに変換するかもしれません。次に、デフォルトのsum機能を使用することができます。

import re 

handle = open('regex_sum.txt','r') 

lst = [] 
for line in handle: 
    b = re.findall('\d+', line) 
    if b: 
     lst.extend([int(x) for x in b]) 
     # this also works if you want to use append 
     #for x in b: 
     # lst.append(int(x)) 

print(sum(lst)) 
# outputs: 437629 
関連する問題