Счетчик частоты слов в файле - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над заданием и врезался в стену. Задание требует, чтобы я посчитал частоту слов в текстовом файле. Я получил свой код, чтобы посчитать слова и поместить их в словарь, но не могу собрать слова, если они имеют разные случаи. Например, мне нужен вывод, чтобы показать {'a':16...}, но вместо этого выводится {'A':2...'a':14}. Вот мой код Любая помощь будет высоко ценится.

file=open("phrases.txt","r")
wordCount={}
for word in file.read().split():
    if word not in wordcount:
        wordcount[word]=1
    else:
        wordcount[word]+=1
print(wordcount) 

Ответы [ 4 ]

0 голосов
/ 12 ноября 2018

Для этого вы можете использовать встроенную функцию Counter в качестве альтернативы циклическому просмотру списка.

пример:

from collections import Counter

file = open("phrases.txt","r")
data = file.read().lower().split()  # added lower() will convert everything to lower case
wordcount = dict(Counter(data))
print(wordcount) 
0 голосов
/ 12 ноября 2018

опустить все слова при сравнении. for word.lower() in file.read().split():

0 голосов
/ 12 ноября 2018

Вы можете преобразовать слова в нижний регистр, а затем сосчитать их. Итак, ваш код меняется на что-то вроде этого.

file=open("phrases.txt","r")
wordCount={}
for word in file.read().split():
    newWord = word.lower()
    if newWord not in wordcount:
        wordcount[newWord]=1
    else:
        wordcount[newWord]+=1
print(wordcount) 

По сути, вы будете хранить в dict, где ключи - это строчные версии каждого слова.

Обратите внимание, что вы потеряете «данные», если будете выполнять операции с учетом регистра.

0 голосов
/ 12 ноября 2018

Похоже, что в вашем вопросе есть проблема с прописными и строчными буквами, так почему бы и нет:

file=open("phrases.txt","r")
wordCount={}
for word in file.read().split():
    if word.lower() not in wordcount:
        wordcount[word.lower()]=1
    else:
        wordcount[word.lower()]+=1
print(wordcount) 

Или:

file=open("phrases.txt","r")
wordCount={}.fromkeys([i.lower() for i in file.read().split()],1)
for word in file.read().split():
    wordcount[word.lower()]+=1
print(wordcount) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...