ITPub博客

首页 > > > 30行python代码来揭秘,三国演义谁戏份最多?

30行python代码来揭秘,三国演义谁戏份最多?

作者:25minutes 时间:2019-12-27 17:57:28 0 删除 编辑

喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!

有些人可能觉得学习编程很枯燥,今天我们就来干一点有趣的事吧!用python统计三国演义人物的出场次数,看看谁的戏份最多?

1 import jieba
2 excludes = {"将军", "却说", "荆州", "二人", "不可", "不能", "如此", "商议", "如何", "主公",
 "军士", "左右", "军马", "引兵", "次日", "大喜", "天下", "东吴", "于是", "今日",
 "不敢", "魏兵","人马", "陛下", "一人", "不知", "汉中", "只见", "众将"} #排除
3 txt = open("三国演义.txt", "r", encoding="utf-8").read()
4 words = jieba.lcut(txt)
5 counts = {}
6 for word in words:
7 if len(word) == 1:
8 continue
9 elif word == "诸葛亮" or word == "孔明曰":
10 rword = "孔明"
11 elif word == "关公" or word == "云长":
12 rword = "关羽"
13 elif word == "玄德" or word == "玄德曰":
14 rword = "刘备"
15 elif word == "孟德" or word == "丞相":
16 rword = "曹操"
17 elif word == "公瑾" or word == "周都督":
18 rword = "周瑜"
19 else:
20 rword = word
21 counts[rword] = counts.get(rword, 0) + 1
22 #如果word在counts中,返回word对应的值,否则返回0
23 for word in excludes:
24 del(counts[word])
25 items = list(counts.items())
26 items.sort(key=lambda x:x[1], reverse=True)
27 fo = open("三国人物出场次数.txt", "a")
28 for i in range(10):
29 word, count=items[i]
30 word = str(word)
31 count = str(count)
32 fo.write(word)
33 fo.write(' ')
34 fo.write(count)
35 fo.write('\n')
36 print (word, count)
37 fo.close()

这里面就是词频分析后的文档。

运行后,程序会自动生成 ”三国人物出场次数.txt“ 的文件,这里面就是词频分析后的文档。

把文档导入Excel中(用Excel打开txt文件,选择用","进行分割,这样就能把词语和词频分到2列),然后手动剔除掉无用的助词(在Excel中操作很容易,而且快速)。在接着把同类词归类,比如”孔明“、”诸葛亮“指的都是同一个人,”操“,”曹操“,”丞相“也都一样。

最后,可以把你想要的数据提取出来,用Excel作图。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4328/viewspace-3171392/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    336
  • 访问量
    14897