中国大学MOOC课程《Python语言程序设计》第6章 文本词频统计 hamlet代码及解析

以下内容为嵩天老师在课堂上讲解的,为方便童鞋们拷贝,我把代码及解析放到下面:

def getText():
    txt=open("hamlet.txt","r").read()  #以只读方式打开这个文件
    txt=txt.lower() #将所有字符转化为小写
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_’‘“”{|}~`':  #将所有特殊符号替换为空格
        txt=txt.replace(ch,' ')
    return txt

hamletText=getText()
words=hamletText.split()  #以默认空格来分割整个字符串,返回列表
counts={}
for word in words:  #这句关键,用words列表中的每个单词去索引字典,
    # 已经有这个键的话就把相应的值加1,没有的话就取值为0,再加1
    counts[word]=counts.get(word,0)+1
items=list(counts.items())  #将字典类型转换为list类型便于操作
items.sort(key=lambda x:x[1],reverse=True)  #对一个列表,所有键值对的第2个元素进行排序,
# 默认是false,是从小到大,True的话就是从大到小,注意里面的'key='暂时记住这句,这是list的sort排序的lambda方法
'''l = [[2, 2, 3], [1, 4, 5], [5, 4, 9]]
2  l.sort(lambda x:x[0])  ##按照第一个元素进行排序
3 print(l)   ##输出:[[1, 4, 5], [2, 2, 3], [5, 4, 9]]
5     匿名函数的x,表示的是l列表中的每一个成员元素
6     
7     x[0] :表示列表里面列表的第一个成员元素
8 '''
for i in range(10):
    word,count=items[i]
    print('{0:<10} {1:>5}'.format(word,count))
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlovepeng1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值