import jieba
excludes = {"将军","却说","荆州","二人","不可","不能",
"如此","商议","如何","主公","军士","左右",
"军马","引兵","次日","大喜","天下","东吴",
"于是","今日","魏兵","陛下","一人","都督",
"人马","不知","不敢"}
txt = open("threekingdoms.txt","r",encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == "诸葛亮" or word == "孔明曰":
rword = "孔明"
elif word == "关公" or word == "云长":
rword = "关羽"
elif word == "玄德" or word == "玄德曰":
rword = "刘备"
elif word == "孟德" or word == "丞相":
rword = "曹操"
else:
rword = word
counts[rword] = counts.get(rword,0) + 1
for word in excludes:
del(counts[word])
items = list(counts.items())
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))
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei' #字体为细黑体
ls=[('曹操',1451),('孔明',1383),('刘备',1252),('关羽',784),
('张飞',358),('吕布',300),('赵云',278),('孙权',264),
('司马懿',221),('周瑜',217)]
x1=[]
for i in range(10):
x1.append(ls[i][0])
y1=[]
for i in range(10):
y1.append(ls[i][1])
print(x1)
print(y1)
plt.scatter(x1, y1)
plt.show()
下面是代码运行结果: