撰寫程式統計《紅樓夢》中前20位出場最多的人物,
# a6.6CalRedChamber
import jieba
jieba.add_word("二姑娘")
jieba.add_word("三姑娘")
jieba.add_word("四姑娘")
jieba.add_word("林姑娘")
jieba.add_word("史姑娘")
jieba.add_word("邢姑娘")
jieba.add_word("琴姑娘")
excludes = {"什么", "一個", "我們", "那里", "你們", "如今", "說道", "知道", "起來", "姑娘", "這里", "出來", "他們", "眾人", "自己",
"一面", "太太", "只見", "怎么", "奶奶", "兩個", "沒有", "不是", "不知", "這個", "聽見", "這樣", "進來", "咱們", "告訴",
"就是", "東西", "回來", "只是", "大家", "老爺", "只得", "丫頭", "這些", "不敢", "出去", "所以", "不過", "的話", "不好",
"姐姐", "一時", "不能", "過來", "心里", "二爺", "如此", "今日", "銀子", "幾個", "答應", "二人", "還有", "只管", "這么",
"說話", "一回", "那邊", "這話", "外頭", "打發", "自然", "今兒", "罷了", "屋里", "那些", "聽說", "小丫頭", "如何", "問道",
"看見", "妹妹", "人家", "不用", "媳婦"}
txt = open("redchamber.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 == "林黛玉" 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(20):
word, count = items[i]
print("{0:<10}{1:>5}".format(word, count))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238063.html
標籤:python
