2013-02-09 5 views
0

Как суммировать числа из текстового файла в python? Допустим, что у нас есть некоторый текст документа, которые имеют номера, как это:Python: как суммировать числа из текстового файла

320 
5203 
5246 

И мы хотим, чтобы питон открыть этот файл и суммировать эти цифры, чтобы получить к результату: 10769. Как я буду это делать?

+0

Какой размер файла? Любой другой текст в файле? – dawg

ответ

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) для s in open ('foo.txt'))'. int будет игнорировать конечное пространство для вас, открытые файлы итерабельны напрямую, а использование выражения генератора вместо понимания списка позволит избежать другого списка. –

+0

thx человек, которого вы меня спасете –

+0

@NedBatchelder: Ах, это полезно знать! Вы должны были сделать свой комментарий отдельным ответом, чтобы его можно было принять - это, безусловно, лучше моего. Я думаю, это не имеет значения, теперь, когда этот вопрос был закрыт. –

Смежные вопросы