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检测一下字符串的编码,相应解码。就能够避免文件乱码的状况了字符串

相关文章
相关标签/搜索