文件中的词频计数器

时间:2018-11-12 06:05:08

标签: python dictionary file-io

我正在做作业,但是碰壁了。作业要求我计算文本文件中单词的出现频率。我得到了用于对单词进行计数的代码,并将它们放入字典中,但是如果单词大小写不同,则无法将它们放在一起。例如,我需要在输出中显示{'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 :(得分:2)

您可以使用名为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) 

答案 1 :(得分:1)

好像在您的问题中说的是大写和小写的问题,为什么不这样呢?

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) 

答案 2 :(得分:0)

比较时降低所有单词。 for word.lower() in file.read().split():

答案 3 :(得分:0)

您可以将单词转换为小写字母,然后对其进行计数。因此,您的代码将变为如下所示。

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中,其中键是每个单词的小写版本。

请注意,如果执行区分大小写的操作,则会丢失“数据”。