2013-08-26 3 views
-2
f = open("unknown.txt", 'r') 
a = sum(line.count('ly') for line in f) 

f = open("unknown.txt", 'r') 
words = 0 

for line in f: 
    words += len(line.split()) 
    print(words) 

Таким образом, этот код выводит числа, ведущие до 78, то есть количество слов в текстовом файле, как мне получить «78» и только «78»? Поэтому я могу использовать его сам, спасибо заранее!Как выбрать последний элемент цикла for?

+1

You * есть * '78' в переменной' words'? – TerryA

+3

Попробуйте переместить вызов печати из цикла for. –

ответ

2
for line in f: 
    words += len(line.split()) 
    print(words) 

Это печатает общее количество слов после каждой строки в файле. Если вы хотите, чтобы напечатать количество слов после питона подсчитал, сколько есть, де-отступ ваш print вызова:

for line in f: 
    words += len(line.split()) 

print(words) 
2

Похоже, вы хотите, чтобы подсчитать количество слов в файл.

Лучший способ сделать это - использовать встроенную функцию len.

with open(file_path) as f: 
    words = len(f.read().split()) 

Чтобы справиться с большими файлами, вы должны сделать это через итерации (генератор), здесь есть функция:

def words_in_file(file_path): 
    with open(file_path) as f: 
     return sum(len(line.split()) for line in f) 

Использование функции:

>>> words_in_file('C:/Python27/README.txt') 
7491 
+0

Обратите внимание, что это потенциально может столкнуться с проблемами с действительно большими файлами, поскольку оно должно читать все это в памяти. Возможно, было бы лучше добавить строку за строкой в ​​этом (по общему признанию, редком) случае. –

+0

@Lattyware тоже верно - отредактировано для отражения. –

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