1. 程式人生 > >Python3 讀取中文檔案txt編碼問題

Python3 讀取中文檔案txt編碼問題

問題描述

嘗試用Python寫一個Wordcloud的時候,出現了編碼問題。在這裡插入圖片描述 照著網上某些部落格的說法添添改改後,結果是變成了“UnicodeDecodeError: ‘utf-8’ codec can’t decode byte…”這個錯誤。 搗鼓了一天啊,TXT(此處為本人現下內心表情)。最後,乾脆寫個最簡單的檔案讀取,竟然還是報錯。於是就考慮是不是txt的編碼問題,因為讀取的txt檔案是在Mac上面新建的純文字檔案,一時沒找到在哪裡檢視編碼,最後拷貝到Windows系統上,查看了txt檔案的編碼,竟然是ASCII,不是我最愛的utf-8,Mac你辜負了我對你的一番信任啊!ε(┬┬﹏┬┬)3

解決方法

將txt檔案的編碼格式改為utf-8即可

此外,在開啟檔案的時候,要加上第三個引數encoding=‘utf8’(沒有橫槓)。

with open('./test3.txt','r',encoding='utf8') as fin:
    for line in fin.readlines():
        line = line.strip('\n')

下面附上第一次成功顯示的詞雲的原始碼(參考網上他人的,註釋很詳細)

import pickle
from os import path
import jieba
import matplotlib.pyplot as plt
from
wordcloud import WordCloud, STOPWORDS, ImageColorGenerator import codecs text = '' with open('./test3.txt','r',encoding='utf8') as fin: for line in fin.readlines(): line = line.strip('\n') # sep’.join(seq)以sep作為分隔符,將seq所有的元素合併成一個新的字串 text += ' '.join(jieba.cut(line)) backgroud_Image = plt.
imread('cake.jpg') print('載入圖片成功!') '''設定詞雲樣式''' wc = WordCloud( background_color='white',# 設定背景顏色 mask=backgroud_Image,# 設定背景圖片 font_path='HYQiHei-25J.ttf', # 若是有中文的話,這句程式碼必須新增,不然會出現方框,不出現漢字 max_words=2000, # 設定最大現實的字數 stopwords=STOPWORDS,# 設定停用詞 max_font_size=150,# 設定字型最大值 random_state=30# 設定有多少種隨機生成狀態,即有多少種配色方案 ) wc.generate_from_text(text) print('開始載入文字') #改變字型顏色 img_colors = ImageColorGenerator(backgroud_Image) #字型顏色為背景圖片的顏色 wc.recolor(color_func=img_colors) # 顯示詞雲圖 plt.imshow(wc) # 是否顯示x軸、y軸下標 plt.axis('off') plt.show() # 獲得模組所在的路徑的 d = path.dirname(__file__) # os.path.join(): 將多個路徑組合後返回 wc.to_file(path.join(d, "h11.jpg")) print('生成詞雲成功!')