2017-12-18 12 views
-4

에서 파일의 특정 값을 개수 :나는 (이 샘플 매우 큰의 실제 파일)이 같은 텍스트 파일이 파이썬

[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

, 당신은 시도 할 수 있습니다이 하나

summation = 0 

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

print(summation) 

출력 : test.txt 파일의

3784 

내용은 다음과 같이 구성되어 있습니다 : 인쇄하려는 경우

[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 
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

감사합니다. 그들은 질문에 -4를 넣었을 것입니다. 아마도 "열린 상태"또는 이와 비슷한 코드 2 줄을 추가하고 싶을 것입니다. 이것이 우리 대부분이 stackoverflow를 싫어하는 이유입니다. 그들은 그들이하지 않은 것을 가장합니다. 아무튼 감사 해요. – Antonis

+0

안녕하세요. 내 fil가 이와 같이 더 복잡하다면. 나는 다음과 같은 파일과 줄을 가지고있다. [52639 - 2017-12-08 11 : 43 : 44,850] INFO __main __. master 251 완성 된 pre-smap 단백질 태그 ('4py6' ('R78', 'EDO'), 35000, 33.207404136657715, '16') 또는 [52639 - 2017-12-08 11 : 43 : 48,014] INFO __main __. master 251 완료된 스무딩 단백질 태그 ('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)) 

당신이 정규식 라이브러리를 사용하여 시도? "괄호로 닫히는 숫자 앞에있는 숫자"와 일치하는 패턴을 작성함으로써 모든 숫자를 포착 한 다음 정수로 변환하는 생성기를 빌드하여 합계 할 수 있습니다.