2017-11-12 11 views
1

나는 임의의 정수를 포함하는 파일을 가지고 있는데 정수는 공백으로 구분할 수 있으며 tab은 linebreak로 구분할 수 있습니다. 즉 는 TextFile.txt는파이썬에서 파일의 정수 합산

내가 LINEBREAK로 구분 정수만을 포함하는 파일에서 요약하는 방법을 알고
12 34 55  22 (tab) 
3 
5 
6 
7 13 

,

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

와 라인에서 합산 ​​

(중 공간이나 탭으로 구분) 포함
linesum = 0 
aa=f.readline() 
bb=aa.split() 

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

textfile.txt의 첫 번째 줄에서이 항목을 실행하면 123이 반환됩니다.

무슨 메신저 문제가 두 줄 바꿈 나누기와 공백과 탭에 의해 구분 된 정수를 합쳐서 둘 다 결합됩니다.

내가 원하는 것은 하나 이상의 정수를 포함하는 행에 linesum 프로그램을 사용하는 것입니다. 그렇지 않으면 linebreak sum 프로그램을 사용하고 싶습니다. 그러나 두 개의 for-loops를 두 개 중 어떤 것이 사용되는지 확인하는 프로그램에 일반화하는 데 문제가 있습니다. 방향을 알려 주시면 대단히 감사하겠습니다. 당신은 파일에 모든 숫자에 걸쳐 합계 파이썬의 re 모듈을 사용할 수 있습니다

+0

, 친절을 표시를 정답으로 또는 다른 설명이 필요한 경우 기존 대답에 대해 설명 할 수 있습니다. – GaneshTata

답변

2

:

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