中国大学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))

你可能感兴趣的:(python,training)