2016-12-06 2 views
-1

Вот вопрос ниже:Функция подсчета повторяющихся слов в текстовом файле? (Python)

Вопрос 12

Написать функцию с именем repeatWords(). Функция repeatWords() принимает два строковых параметра: имя входного файла и имя выходного файла. Входной файл содержит только строчные буквы и пробелы. Функция repeatWords() должна идентифицировать слова (слова), которые появляются более одного раза в файле и записывать каждое такое слово в строку выходного файла, за которым следует число раз, которое появляется в поле . Повторное слово должно быть записано только в одну строку выходного файла, независимо от того, сколько раз оно появляется во входном файле. Порядок, в котором слова записываются в выходной файл , не имеет значения. Например, если входной файл содержит следующие строки:

i would not like them here or there

i would not like them anywhere

Затем выходной файл следующие строки будет правильно:

like 2

not 2

i 2

would 2

them 2

Вот мой код. Я просто не знаю, как получить оператор if, когда дело доходит до определения числа в счетчике больше 1 (больше или равно 2).

def repeatWords(inFile, outFile): 
from collections import Counter 
outFile = open(outFile, 'w') 
with open(inFile, 'r') as f: 
    wordcount = Counter(f.read().split()) 
    for item in wordcount.items(): 
     if item >= 2: 
      outFile.write("{} {}".format(*item)) 
print(repeatWords('input.txt','output.txt')) 

Также я не начал участвовать в коде еще где я должен рассчитывать только повторяющиеся слова

ответ

0

item является кортеж (word, count) поэтому вместо if item >= 2: вам нужно сравнить количество:

if item[1] >= 2: 

в качестве альтернативы вы можете распаковать кортежи, возвращаемые items(), которые сделали бы немного код более читаемым:

for word, count in wordcount.items(): 
    if count >= 2: 
     print("{} {}".format(word, count)) 
+0

Да, ваш ответ правильный! Но еще одно: print ("{} {} \ n" .format (word, count)) - это способ сделать это, чтобы перейти к следующей строке. – Jorgan

+0

@Jorgan 'print' автоматически добавляет новую строку, если не указано иное. Ваш пример печатает пустую строку между каждым результатом, обратите внимание, что вы достигнете того же результата, передав параметр 'end' на [' print'] (https://docs.python.org/3.5/library/functions.html#print) : 'print (" {} {} ". format (word, count), end = '\ n \ n')' – niemmi

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