python读取⽂本txt⽂件乱码问题
python2的编码实在是个头疼的问题,编码问题也将作为⼀个长期的话题,遇到问题随时补充。
这次的问题⽐较简单,是在做词云wordcloud的时候发现的,作⽤就是从⽂本⽂件中读取⽂字,将其制作成词云。部分代码如下:
1import chardet
2from wordcloud import WordCloud
3import matplotlib.pyplot as plt
4
5 with open("C:\\Users\\fyc\\Desktop\\", "r") as f:
6    text = f.read()
7 type = chardet.detect(text)
8 text1 = text.decode(type["encoding"])
9 text2 = "".join(text1)
10print text
11print text1
12print 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)
python怎么读取txt21 plt.axis("off")
22 plt.show()
我们只关注5,6,7,8这四⾏代码,我在14⾏打了断点,观察读取的内容
很明显,直接读取,text是str类型,完全是乱码,text1做了处理,显⽰正常。
在这我们隆重介绍 python 内建模块  chardet模块,编码检测。这个模块可以检测出⼀⾏字符是什么编码,我们看⼀下text的编码,如下:
chardet模块的detect⽅法返回⼀个字典,其中的“encoding",明显的指出,这个是”GB2312"编码,接下来我们会⼼⼀笑,可以⽤decode来解码了,解码完应该就是正常显⽰了。
所以我们⽤了上⾯的这⼀句,那么今后所有的读取⽂件地⽅,在显⽰之前,我们都可以⽤chardet检测⼀下字符串的编码,相应解码。就可以避免⽂件乱码的情况了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。