2016-03-23 1 views
0

ちょうどPythonの学習を始め、正規表現とリスト圧縮を使ってtxtファイル内のすべての数字をどのように集計するのだろうかと思います。txtファイルの数字を集計する1行正規表現

私はfindAllの検索では空のリストから番号を追加しない方法がわから次のことを書きましたが、ありません:

import re 

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

は、次のことを試みたが、いずれかの仕事にdoesntのようだ: プリント(SUM([int型(NUM [0])でlen [NUM] = re.findall 0( '[0-9] +のために! ')、open(' regex_sum_256911.txt ')。read()。split())])) – Lin

+0

負の数や浮動小数点数はありますか?はいの場合は、より複雑な正規表現パターンが必要です。 – RootTwo

答えて

0

re.findallfileobj.read()上で動作するはずですので、あなたが入力データを分割する必要はありません。また、re.findallの結果リストを反復しながら、中間変数にインデックスを指定しないでください。

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

あなたは素晴らしいです! – Lin

+0

ちょうど、ありがとう! – Lin

0

\d+とすると、空の文字列はありません。マップを使用すると、すべての文字列を整数に変換し、sum()でそれらを合計します。

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

大きな時間ありがとう! – Lin

+0

助けがあればこの回答を受け入れてください! – wtpoo

関連する問題