Python练习题:词频统计

def getText():
    #获取文件
    text = open("Walden.txt","r").read()
    text = text.lower()
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~' :
        text = text.replace(ch," ")
    return  text

txt = getText()
words = txt.split()
counts = {}               #定义空字典
for word in words:
    counts[word] = counts.get(word,0) + 1

items = list(counts.items())
#将列表按照count中键值从大到小的顺序进行排列
items.sort(key=lambda x:x[1],reverse=True)

#输出结果,前二十位最高频词汇
for i in range(10):
    word,count = items[i]
    print("#{0:<10}{1:>5}".format(word,counts))

词频统计代码如上,但是出现报错,请问这是什么原因啊?

打开文件语句中加入编码格式参数,改为text = open("Walden.txt","r",encoding='utf-8‘).read(),试一下看看。另代码末尾打印语句中也有个小错误,是count而不是counts

把字符解码为gbk编码时失败,0xbf字符不能解码为gbk编码。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y