2013-02-09 57 views
0

如何從Python中的文本文件中總結數字?比方說,我們有數字像這樣的一些文本文檔:Python:如何從文本文件中總結數字

320 
5203 
5246 

而我們想蟒蛇打開該文件,總結這些數字來得到結果:10769.我應如何做到這一點?

+0

文件有多大?文件中的任何其他文字? – dawg 2013-02-09 20:39:27

回答

2

如果文件不是太大,你可以只讀取文件到一個數組,使用列表理解到線轉換成整數列表,然後計算的是總和:

sum([int(s.strip()) for s in open('foo.txt').readlines()]) 

但是,這會將整個文件讀入內存。如果您的文件較大,很可能會更少的內存密集型積累在命令式方式的總和:

result = 0 
for s in open('foo.txt'): result += int(s.strip()) 

或發電機表達式,這樣的列表並不需要被存儲在內存中的

sum(int(s.strip()) for s in open('foo.txt')) 
+5

有趣的是,您對內存使用的關注可以通過簡化您的第一個建議來解決:'sum(int(s)for s in open('foo.txt'))''。 int將忽略尾隨空間,打開的文件可以直接迭代,並且使用生成器表達式而不是列表理解將避免另一個列表。 – 2013-02-09 20:47:16

+0

thx man you save me – 2013-02-09 20:53:35

+0

@NedBatchelder:嗯,這很好!你應該把你的評論作爲一個單獨的答案,以便它可以被接受 - 這肯定比我的更好。我想這沒關係,現在這個問題已經結束了。 – 2013-02-10 22:46:09