一。环境:
你需要有一篇英文文章和python文件在同一个目录下
目的:打印出一篇英文文章中出现最多的单词及其次数(前十名)
二。代码及其分析:
def getText():
txt = open("book1.txt", "r").read()#打开book1.txt文件,将里面所有的内容读取下来给txt变量
txt = txt.lower()#调用lower()函数将所有的字母改成小写
for ch in '!"#$&()*+,;<=>?@[\\]^_{|}~':
txt = txt.replace(ch, " ")#将文本中除英文单词外的符号替换成空格
return txt#将最终内容全是单词的纯净文本返回
hamletTxt = getText()
words = hamletTxt.split()#调用split()函数使得文本以 空格 分隔开,最终以列表成形式返回
counts ={}#定义一个字典counts
for word in words:#对words列表进行遍历
counts[word] = counts.get(word, 0) + 1
#counts.get(word, 0),如果word这个在列表中,就返回它的counts[word]值,最终实现 counts[word]+1
#如果word这个不在列表中,就将word这个单词加入列表,将它的初始值counts[word]赋值为0
items = list(counts.items())#将counts这个字典转化成一个列表类型
items.sort(key=lambda x: x[1], reverse=True)#将items列表进行从大到小的排序
for i in range(10):#遍历输出值最大的前10位元素及其键值
word, count = items[i]
print("{0:<10}{1:>5}".format(word, count))