2016-11-18 10 views
0

Я пытаюсь выполнить итерацию трех текстовых файлов и подсчитывать каждое уникальное слово в них - и создавая библиотеку этих уникальных слов для каждого файла, а затем добавляя эти библиотеки (которые я сделал в списки) вместе. Например, «file1.txt», «file2.txt» и «file3.txt» будут иметь свои собственные библиотеки.Python: Как поместить несколько файлов .txt в свои собственные библиотеки, соответственно.

def byFreq(pair): 
    return pair[1] 

def memes(): 

for filename in ['file1.txt','file2.txt','file3.txt']: 
    txt = open(filename, 'r').read() 
    txt = text.lower() 
    for char in '!""#$%&()*+,-./:;<=>[email protected][\\]^_`{|}~\" ': 
     txt = text.replace(char, ' ') 
    words = txt.split() 

    for w in words: 
     counts[w] = counts.get(w,0) + 1 

    itms = list(counts.itms()) 
    itms.sort() 
    itms.sort(key = byFreq, reverse=True) 
    for i in range(50): 
     word, count = items[i] 
     print ("{0:<15}{1:>5}".format(word, count)) 

Это то, что у меня есть на данный момент. Он выполняет итерацию по всем спискам правильно, но возвращает мне только список уникальных слов для каждой первой итерации.

the   14352 
of    6617 
and    6355 
a    4644 
to    4605 

Поскольку «file1.txt» имеет «тем» в нем 14352 раз, он возвращает это число и отбрасывает другие экземпляры «тем» в других файлах. Он делает это и для других слов, пока не встретит другое уникальное слово в одном из других файлов, о котором не упоминалось ранее.

Что я пытаюсь сделать, это добавить все экземпляры 'the', а также все слова во всех файлах. Я застрял в этом пункте выше. Любая помощь приветствуется.

+0

Ваш пример кода, как представляется неполной и неправильно отформатирован (отступ 'memes' функции). Например, где инициализируется 'counts'? – Matt

ответ

0

Извините за мой английский, я не говорю хорошо.

Я решил упражнения это так:

import collections 
counter = collections.Counter() 

for filename in ['file1.txt', 'file2.txt', 'file3.txt']: 
    txt = open(filename, 'r').read() 
    txt = txt.lower() 
    for char in '!""#$%&()*+,-./:;<=>[email protected][\\]^_`{|}~\" ': 
     txt = txt.replace(char, ' ') 
    words = txt.split() 
    for word in words: 
     counter[word] += 1 

for word, count in counter.most_common(5): #print 5 most common words 
    print("{0:<15}{1:>5}".format(word, count)) 

до свидания

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

  • Нет связанных вопросов^_^