2017-12-18 8 views
-4

でファイルの特定の値をカウント:私は(これはサンプル、非常に大規模では実際のファイルである)このようなテキストファイルを持っているのpython

[52639 - 2017-12-08 11:56:58,680] INFO __main__.master 251 Finished pre-smap protein tag ('4h02', [], 35000, 665, '67') 
[52639 - 2017-12-08 11:57:37,686] INFO __main__.master 251 Finished pre-smap protein tag ('4nqk', [], 35000, 223, '18') 
[52639 - 2017-12-08 11:58:46,984] INFO __main__.master 251 Finished pre-smap protein tag ('3j60', [], 3500, 1052, '65') 
[52639 - 2017-12-08 12:01:10,073] INFO __main__.master 251 Finished pre-smap protein tag ('4ddg', [], 35000, 541, '38') 
[52639 - 2017-12-08 12:03:37,570] INFO __main__.master 251 Finished pre-smap protein tag ('4ksl', [], 35000, 1303, '68') 

と私は最後のコンマの前に値をカウントします。結果は665 + 223 + 1052 + 541 + 1303 = 3784となります。

これを実現する方法を理解できません。どんな助けもありがとう。ここで

答えて

0

、あなたはこれを試すことができます:あなたは、印刷したい場合は

[52639 - 2017-12-08 11:56:58,680] INFO main.master 251 Finished pre-smap protein tag ('4h02', [], 35000, 665, '67') 
[52639 - 2017-12-08 11:57:37,686] INFO main.master 251 Finished pre-smap protein tag ('4nqk', [], 35000, 223, '18') 
[52639 - 2017-12-08 11:58:46,984] INFO main.master 251 Finished pre-smap protein tag ('3j60', [], 3500, 1052, '65') 
[52639 - 2017-12-08 12:01:10,073] INFO main.master 251 Finished pre-smap protein tag ('4ddg', [], 35000, 541, '38') 
[52639 - 2017-12-08 12:03:37,570] INFO main.master 251 Finished pre-smap protein tag ('4ksl', [], 35000, 1303, '68') 

summation = 0 

with open("test.txt", "r") as infile: 
    for line in infile: 
     newLine = line.split(", ") 
     summation = summation + int(newLine[3]) 

print(summation) 

出力:

3784 

test.txtファイルの内容は、次のように構成されています合計を行うすべての数、あなたは各番号を格納するためにリストを使用することができます:

summation = 0 
coefficients = [] 

with open("test.txt", "r") as infile: 
    for line in infile: 
     newLine = line.split(", ") 
     coefficients.append(newLine[3]) 
     summation = summation + int(newLine[3]) 

print("+".join(coefficients), end="=") 
print(summation) 

出力:

665+223+1052+541+1303=3784 
+0

ありがとう、あなたはvasilisです。彼らは疑問を抱いています。おそらく、 "open"のような2行のコードを追加したいと思っています。これは私たちの大部分がstackoverflowを嫌う理由です。彼らは、彼らがしていないものをふりをする。とにかくありがとうございました。 – Antonis

+0

こんにちはvasilis。もし私のfilがこのようにもっと複雑なら、私はこのようなファイルとラインを持っているとします:[52639 - 2017-12-08 11:43:44,850] INFO __main __。master 251完成したpre-smapタンパク質タグ( '4py6'マスター '258'、 'EDO'、35000、33.207404136657715、 '16')または[52639 - 2017-12-08 11:43:48,014] INFO __main __。master 251完成したpre-smapタンパク質タグ( '1nw4' 'IMH'、 'IPA'、 'SO4']、3500、153.33520197868347、 '64')。解決策はありますか? – Antonis

+0

@Antonisよく、コミュニティは研究努力を示し、メンバーに最適な解決策を見つけようとするように挑戦する質問に感謝する傾向があります。さらに、Stackoverflowは、初心者から高度なスキルを持つメンバーまで、幅広いコミュニティであり、一歩前進したいと考えています。だから、努力の欠如や重複の可能性のある質問を示す質問は魅力的ではありません。しかし、とにかく、私の答えを受け入れてくれてありがとう。 –

0
import re 
s = """ 
[52639 - 2017-12-08 11:56:58,680] INFO main.master 251 Finished pre-smap protein tag ('4h02', [], 35000, 665, '67') 

[52639 - 2017-12-08 11:57:37,686] INFO main.master 251 Finished pre-smap protein tag ('4nqk', [], 35000, 223, '18') 

[52639 - 2017-12-08 11:58:46,984] INFO main.master 251 Finished pre-smap protein tag ('3j60', [], 3500, 1052, '65') 

[52639 - 2017-12-08 12:01:10,073] INFO main.master 251 Finished pre-smap protein tag ('4ddg', [], 35000, 541, '38') 

[52639 - 2017-12-08 12:03:37,570] INFO main.master 251 Finished pre-smap protein tag ('4ksl', [], 35000, 1303, '68') 
""" 

pattern = ', ([0-9]*), \'[0-9]*\'\)' 

print sum(int(i) for i in re.findall(pattern,s)) 

はあなたが正規表現ライブラリを使用してみましたか? 「括弧で囲まれた数字の前の数字」と一致するパターンを作成することによって、それらの数字をすべて取得し、それらを整数に変換して合計するジェネレータを構築することができます。

関連する問題