import re
ls = list()
dc = dict()
# 介词、连词、人称代词等自己统计
adverb = ['i', 'you', 'he', 'she', 'it', 'in', 'on', 'with', 'by', 'for', 'at', 'about', 'under', 'of', 'to', 'and',
'or',
'therefore', 'so', 'of', 'a']
with open("老人与海.txt", mode='r', encoding='utf-8') as f:
lryh = f.read() # 打开文件并读取
for i in lryh.split(' '): # 按空格分隔,即获取单个词语,
res=re.match(r'[a-zA-Z]+$',i)
if res:
i=i.lower()
if i not in adverb: # 这个单词不再adverb列表中,则添加到ls中
ls.append(i)
else: # 如果匹配出错,就结束这次循环,这个else,写不写的无所谓了,反正是最后面的循环语句
continue
# i = i.lower() # 转成全部是小写字母,为后面的判断提供方便
# if i.isalpha() and i not in adverb: # 如果是字母组成的词语并且不再adverb列表中的
# ls.append(i) # 保存在ls列表中
for item in ls:
dc[item] = ls.count(item) # 统计ls列表中单词出现次数,并保存到dc字典中。
sorted_dc = sorted(dc.items(), key=lambda b: b[1], reverse=True) # 按字典的value值进行降序排序
print('前十个出现频率最高的单词:')
for item in sorted_dc[0:10]:
print(item[0], end='\t')
print('\n')
for key, value in sorted_dc[0:10].__iter__():
print('%s出现了%s次' % (key, value))