gpt4 book ai didi

带排序频率的python单词计数器

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:09 25 4
gpt4 key购买 nike

我正在尝试读取一个文本文件,然后打印出所有最常用词在顶部的所有词,随着它在列表中的下降而减少。我有 Python 3.3.2。

def wordCounter(thing):
# Open a file
file = open(thing, "r+")
newWords={}
for words in file.read().split():
if words not in newWords:
newWords[words] = 1
else:
newWords[words] += 1

for k,v in frequency.items():
print (k, v)
file.close()

现在,它确实以我想要的/way/方式打印出所有内容,但有些词的使用频率高于列表中靠后的其他词。我试过使用 newWords.sort(),但它说:

"AttributeError: 'dict' object has no attribute 'sort'"

所以我不知所措,因为我的知识非常有限。

最佳答案

不要重新发明轮子 collections.Counter 将使用 .most_common 进行计数和排序,这将为您提供最常用到最不常用的单词:

from collections import Counter
def wordCounter(thing):
with open(thing) as f:
cn = Counter(w for line in f for w in line.split())
return cn.most_common()

您也不需要将整个文件读入内存,您可以逐行迭代并拆分每一行。您还必须考虑标点符号,您可以使用 str.strip 将其删除:

def wordCounter(thing):
from string import punctuation
with open(thing) as f:
cn = Counter(w.strip(punctuation) for line in f for w in line.split())
return cn.most_common()

关于带排序频率的python单词计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com