Python3 讀取中文檔案txt編碼問題
阿新 • • 發佈:2018-12-19
問題描述
嘗試用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('生成詞雲成功!')