import jieba
f=open
("g:\\紅樓夢.txt"
,"r"
,encoding=
"utf-8"
)txt=f.read(
)words=jieba.lcut(txt)
#精準模式
ls=[
]![在這裡插入描述]
=="第"
and word[-1
]=="回":
if word in ls:
continue
else
:print
(ls)
for i in
range
(len
(ls)):
print
(ls[i]
) a=
if i<
len(ls)-1
:for word in words[words.index(ls[i])+
1:words.index(ls[i +1]
)]:if
len(word)==1
:# 排除單個字元的統計結果
continue
else
: a[word]
= a.get(word,0)
+1elif i ==
len(ls)-1
:#最後一回
for word in words[words.index(ls[i])+
1:]:
iflen
(word)==1
:# 排除單個字元的統計結果
continue
else
: a[word]
= a.get(word,0)
+1items =
list
(a.items())
# 將字典轉換為記錄列表
items.sort(key=
lambda x: x[1]
, reverse=
true
)# 記錄第二列排序
for i in
range(5
):word, count = items[i]
print(""
.format
(word, count)
)print
("\n"
)f.close(
)
第一步是開啟紅樓夢.txt檔案,唯讀的方式,使用utf-8編碼方式
第二步是使用精準模式,將單詞儲存到words列表中,再將「第幾回」存放到乙個新的列表中,便於對紅樓夢檔案每一回進行切片,切邊的界點便是第多少回這樣的字眼,第一種統計是第i回到第i+1回的之間的詞頻統計,還有一種就是最後一回的詞頻統計。
使用乙個字典型別a={},統計單詞的次數:
for word in words:
iflen
(word)==1
:#排除單個字元的統計結果
continue
else
: a[word]
=a.get(word,0)
+1
如果字元長度為1則跳過,否則使用a.get(word,0)方法表示:如果word在a中則返回word對應的值,如果word不在a中就返回0。
第三步是對單詞的統計的值從高到低進行排序,輸出前5個高頻詞語,並格式化列印輸出。由於字典沒有順序,需要將其轉換為有順序的列表型別,再使用sort()方法和lambda函式配合實現單詞出現的次數,對元素進行排序。最後輸出排序結果前15位的單詞。
items=
list
(a.items())
#將字典轉換為記錄列表
items.sort(key=
lambda x:x[1]
,reverse=
true
)#記錄第二列排序
Rust 紅樓夢一書中文字元的統計
一 準備工作 1 相關的庫 因為紅書中大部分是中文字元,標準庫中目前還無法直接處理。因此,在進行分析前,在toml檔案中的依賴庫中,新增一下以下 encoding 0.2 2 紅樓夢一書的txt檔案。直接找度娘。二 相關 extern crate encoding use encoding use ...
用Python來理一理紅樓夢裡的這些關係
最近把紅樓夢又抽空看了一遍,古典中的經典,我真無法用言辭讚美她。今天,想跟大家一起用 python 來理一理紅樓夢中的的那些關係 不要問我為啥是紅樓夢,而不是水滸三國或西遊,都是經典,但我個人還是更喜歡偏古典的書,紅樓夢也是我多次反覆品讀的為數不多的 對它的感情也是最深的。好了好了這些都不重要,重要...
Python爬蟲練習第一章 每60s重新整理
作為乙個吾愛的忠實粉,我最喜歡的就是成天重新整理吾愛的精品區,看看有啥新鮮好玩的軟體。此次需要用到4個模組 首先還是先貼上源 為敬 coding utf 8 import requests import re import time import random def wuai url a requ...