Python——实现英文词频统计:以hamlet为例

该博客介绍了如何使用Python读取文本文件《哈姆雷特》,将所有字符转为小写并替换特殊符号为空格,然后统计并排序单词出现的次数。通过Python的文本处理技术,展示了对经典文学作品的数字化分析方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中国大学MOOC 嵩天老师在课堂上讲解的,附上代码和详细注释。

代码和文本文件需要放到同一目录下。


def getText():
    txt = open("hamlet.txt","r").read()
    txt = txt.lower()  # 将所有字符转换为小写
    for ch in '!@#$%^&*()":;?,.><+=-_{}[\\]\/|`~':  #将所有特殊符号用空格替代
        txt = txt.replace(ch," ")
    return txt

hamletTxt = getText()
words = hamletTxt.split()  #用空格分隔文本并返回列表格式
counts = {}
for word in words:
    # counts.setdefault(word, 0)
    # counts[word] += 1
    # 如果 word变量对应的Key已经在字典中了,那么counts.setdefault(word, 0) 这一行的作用相当于counts.get(word)。
    #    # 如果word变量对应的Key不在字典中了,那么此时就会添加这个Key,然后把它的值设置为0。
    # 原文链接:https: // blog.youkuaiyun.com / weixin_39862985 / article / details / 111499002
    counts[word] = counts.get(word,0) + 1
items = list(counts.items())  #返回所有键值对信息,生成列表
#key=lambda 元素: 元素[成员索引] .例如:key=lambda x: x[1] 对元素第二个成员进行排序.
# 排序默认从小到大升序,reverse= True表示对列表反排序:降序排列
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,count))
    #题中0对应的是Word,1对应的是count。
    # 冒号是引导符,后面跟的是格式控制方法。<表示左对齐,>表示右对齐,数字表示宽度。
    # 文中<10表示左对齐,并占10个位置,>5表示右对齐,占5个位置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值