我正在做作业,但是碰壁了。作业要求我计算文本文件中单词的出现频率。我得到了用于对单词进行计数的代码,并将它们放入字典中,但是如果单词大小写不同,则无法将它们放在一起。例如,我需要在输出中显示{'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)
答案 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中,其中键是每个单词的小写版本。
请注意,如果执行区分大小写的操作,则会丢失“数据”。