python讀取文本txt文件亂碼問題

python2的編碼實在是個頭疼的問題,編碼問題也將做爲一個長期的話題,遇到問題隨時補充。python

此次的問題比較簡單,是在作詞雲wordcloud的時候發現的,做用就是從文本文件中讀取文字,將其製做成詞雲。部分代碼以下:json

 1 import chardet
 2 from wordcloud import WordCloud
 3 import matplotlib.pyplot as plt
 4 
 5 with open("C:\\Users\\fyc\\Desktop\\json.txt", "r") as f:
 6     text = f.read()
 7 type = chardet.detect(text)
 8 text1 = text.decode(type["encoding"])
 9 text2 = "".join(text1)
10 print text
11 print text1
12 print text2
13 
14 wordcloud = WordCloud(
15     background_color="white",
16     width=1000,
17     height=860,
18     margin=2).generate(text2)
19 
20 plt.imshow(wordcloud)
21 plt.axis("off")
22 plt.show()

 

咱們只關注5,6,7,8這四行代碼,我在14行打了斷點,觀察讀取的內容編碼

很明顯,直接讀取,text是str類型,徹底是亂碼,text1作了處理,顯示正常。spa

在這咱們隆重介紹 python 內建模塊  chardet模塊,編碼檢測。這個模塊能夠檢測出一行字符是什麼編碼,咱們看一下text的編碼,以下:code

chardet模塊的detect方法返回一個字典,其中的「encoding",明顯的指出,這個是」GB2312"編碼,接下來咱們會心一笑,能夠用decode來解碼了,解碼完應該就是正常顯示了。blog

 

 因此咱們用了上面的這一句,那麼從此全部的讀取文件地方,在顯示以前,咱們均可以用chardet檢測一下字符串的編碼,相應解碼。就能夠避免文件亂碼的狀況了字符串

相關文章
相關標籤/搜索