小編給大家分享一下Python3如何解決讀取中文文件txt編碼的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
問題描述
嘗試用Python寫一個Wordcloud的時候,出現(xiàn)了編碼問題。
照著網(wǎng)上某些博客的說法添添改改后,結(jié)果是變成了“UnicodeDecodeError: ‘utf-8' codec can't decode byte…”這個錯誤。
搗鼓了一天啊,TXT(此處為本人現(xiàn)下內(nèi)心表情)。最后,干脆寫個最簡單的文件讀取,竟然還是報錯。于是就考慮是不是txt的編碼問題,因?yàn)樽x取的txt文件是在Mac上面新建的純文本文件,一時沒找到在哪里查看編碼,最后拷貝到Windows系統(tǒng)上,查看了txt文件的編碼,竟然是ASCII,不是我最愛的utf-8,Mac你辜負(fù)了我對你的一番信任?。ˇ?┬┬﹏┬┬)3
解決方法
將txt文件的編碼格式改為utf-8即可
此外,在打開文件的時候,要加上第三個參數(shù)encoding=‘utf8'(沒有橫杠)。
with open('./test3.txt','r',encoding='utf8') as fin: for line in fin.readlines(): line = line.strip('\n')
下面附上第一次成功顯示的詞云的源碼(參考網(wǎng)上他人的,注釋很詳細(xì))
import jieba import jieba.analyse from matplotlib import pyplot as plt from scipy.misc import imread from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator # 1.讀取數(shù)據(jù) with open("./test.txt","r",encoding="utf8") as f: text = f.read() # 2.基于 TextRank 算法的關(guān)鍵詞抽取,top50 keywords = jieba.analyse.textrank(text, topK=50, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) file = ",".join(keywords) # 指定中文字體,不然中文顯示框框 font = r'./HYQiHei-25J.ttf' print(file) # 指定背景圖,隨意 image = imread('cake.jpg') wc = WordCloud( font_path=font, background_color='white',#背景色 mask=image,#背景圖 stopwords=STOPWORDS,#設(shè)置停用詞 max_words=100,#設(shè)置大文字?jǐn)?shù) max_font_size=100,#設(shè)置大字體 width=800, height=1000, ) #生成詞云 image_colors = ImageColorGenerator(image) wc.generate(file) # 使用matplotlib,顯示詞云圖 plt.imshow(wc) #顯示詞云圖 plt.axis('off') #關(guān)閉坐標(biāo)軸 plt.show() # 保存圖片 wc.to_file('news.png')
以上是“Python3如何解決讀取中文文件txt編碼的問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
名稱欄目:Python3如何解決讀取中文文件txt編碼的問題-創(chuàng)新互聯(lián)
文章分享:http://jinyejixie.com/article4/psgoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、品牌網(wǎng)站設(shè)計、企業(yè)建站、虛擬主機(jī)、搜索引擎優(yōu)化、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容