python:用wordcloud生成一個文本的詞雲

今天學習了wordcloud庫,對《三國演義》生成了詞雲圖片,很是漂亮。就想多嘗試幾個,結果發現一系列問題。
最常出現的一個錯誤就是"UnicodeDecodeError : ...", 冒號後面的info不一而足。看意思也能猜出是"encoding"解碼方式不對,因而各類編碼嘗試,有的默認或者"ANSI"就能夠解碼,有的必須用"UTF-8", 一狠心用了」errors='ignore', 結果順利運行了,詞雲圖片倒是一堆亂碼。
注:若是圖片各類方框,應該是字體沒加對了(ttf文件系統裏搜一下):font_path = "msyh.ttf"
想着應該有個辦法能獲取到文本的編碼方式啊,一搜果真如此, 連接:https://blog.csdn.net/qq_32618817/article/details/81363235. 學習

 1 #wordcloud_V2.py
 2 import jieba  3 import wordcloud  4 import chardet  5 #from scipy.misc import imread                  #用於生成圖片形狀的詞雲(安裝命令:pip install -U scipy) #新版裏用from imageio import imread代替
 6 def get_encoding(file):                         #用命令安裝這個包"pip install chardet"
 7     with open(file,'rb') as f:                  #二進制方式讀取,獲取字節數據,檢測類型
 8         encode = chardet.detect(f.read())       #獲取文件的編碼方式, 獲取到的是個字典類型
 9         return encode['encoding']               #編碼方式爲encoding的鍵值。 爲字符串類型。
10 #mask = imread('pic.png') #加載圖片
11 #打印文件編碼
12 file_type = get_encoding('22.txt') 13 print(file_type) 14 
15 
16 #製做詞雲
17 test = open('22.txt','r',encoding=file_type,errors='ignore')  #由於是字符串類型,這裏能夠直接引用。
18 
19 t_read = test.read() 20 t_lcut = jieba.lcut(t_read) 21 
22 test.close() 23 
24 txt = " ".join(t_lcut) 25 #print(type(t_lcut))
26 
27 
28 fo = wordcloud.WordCloud(width=800,height=600,font_path="msyh.ttf",mask = mask) 29 
30 fo.generate(txt) 31 fo.to_file('lala.jpg')

結果以下字體

相關文章
相關標籤/搜索