2015-02-08 255 views
0

我的文件有5個值,由1個逗號和1個空格分隔。它們是:1,2,3,5,6閱讀逗號分隔值

但是,無論我嘗試(strip,split等)我只是無法處理文件並將其累加到累加器(suma = 0)。

當我嘗試將值轉換爲intergers我得到以下錯誤:與基地10個無效字面INT():ValueError異常「1,2,3,5,6」

究竟如何,我可以閱讀他們,轉換他們,然後總結他們?

def main(): 

input_file = open('sumadatos.txt', 'r') 
line = input_file.readline() 
while line != '': 
    value = int(line) 
    suma += value 
print suma 

main() 
+0

要打印'17'作爲答案? – 2015-02-08 22:02:55

+0

嗯,我想知道的是,我怎樣才能讀取這些值而沒有得到一個錯誤,當我嘗試將它們轉換爲整數 – TakamuraM 2015-02-08 22:04:07

回答

1

可以代替做,使用ast

>>> f = open("sumadatos.txt") 
>>> sum(ast.literal_eval(f.readline())) 
17 

但是,如果你想傳統做它,你可以做

>>> sum(int(i) for i in f.readline().split(',')) 
17 
+0

確實,如此邪惡的使用元組eval – 2015-02-08 22:05:25

+0

@AnttiHaapala這是'literal_eval' ... Yay – 2015-02-08 22:07:39

+0

'literal_evil':D – 2015-02-08 22:11:34

2

一種方法是

with open('sumadatos.txt', 'r') as f: 
    print(sum(map(int, next(f).split(',')))) 

int可以消耗的前緣和後空白,所以int(' 1 ') =>1

+0

你也可以使用'f.read()'而不是'next(f)'來確保文件的全部內容被讀取,而不僅僅是第一行。 – markusk 2015-02-08 22:48:11

0

numpy庫具有一些很大的內置函數用於解析在分隔文件成陣列。

from numpy import genfromtxt 
data = genfromtxt('sumadatos.txt', delimiter=',') 
print data.sum()