python2的编码实在是个头疼的问题,编码问题也将作为一个长期的话题,遇到问题随时补充。

这次的问题比较简单,是在做词云wordcloud的时候发现的,作用就是从文本文件中读取文字,将其制作成词云。部分代码如下:

 import chardet
from wordcloud import WordCloud
import matplotlib.pyplot as plt with open("C:\\Users\\fyc\\Desktop\\json.txt", "r") as f:
text = f.read()
type = chardet.detect(text)
text1 = text.decode(type["encoding"])
text2 = "".join(text1)
print text
print text1
print text2 wordcloud = WordCloud(
background_color="white",
width=1000,
height=860,
margin=2).generate(text2) plt.imshow(wordcloud)
plt.axis("off")
plt.show()

我们只关注5,6,7,8这四行代码,我在14行打了断点,观察读取的内容

很明显,直接读取,text是str类型,完全是乱码,text1做了处理,显示正常。

在这我们隆重介绍 python 内建模块  chardet模块,编码检测。这个模块可以检测出一行字符是什么编码,我们看一下text的编码,如下:

chardet模块的detect方法返回一个字典,其中的“encoding",明显的指出,这个是”GB2312"编码,接下来我们会心一笑,可以用decode来解码了,解码完应该就是正常显示了。

所以我们用了上面的这一句,那么今后所有的读取文件地方,在显示之前,我们都可以用chardet检测一下字符串的编码,相应解码。就可以避免文件乱码的情况了

最新文章

  1. Oracle操作
  2. 快速解析超大XML不占用太大内存
  3. Enum:EXTENDED LIGHTS OUT(POJ 1222)
  4. 精通JavaScript的this关键字
  5. GitHub Pages 搭建流程-基于jekyll-bootstrap
  6. JRE与JDK的区别
  7. Oozie简介
  8. Unity3D研究院编辑器之脚本设置ToolBar
  9. iOS开发笔记系列-基础2(类)
  10. Shell之test
  11. MySQL定时事件
  12. Android方法的传递值及其改变
  13. 【转】 怎么刷入BOOT.IMG(刷机后开机卡在第一屏的童鞋请注意)-------不错不错
  14. Python学习之路——字符处理(一)
  15. Visual Studio 2015环境
  16. ng自定义服务(利用factory)
  17. 【JAVAWEB学习笔记】10_JDBC连接池&DBUtils
  18. [国嵌攻略][109][Linux系统调用]
  19. BOM 浏览器对象模型_window 对象的常见 window.属性_window.方法
  20. Java NIO 学习

热门文章

  1. hdu1542 Atlantis(矩阵面积的并)
  2. C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
  3. Problem B. Full Binary Tree
  4. 【剑指Offer学习】【面试题3 :二维数组中的查找】
  5. [转]VS中展开和折叠代码
  6. UVM中的sequence使用(一)
  7. redis删除单个key和多个key,ssdb会落地导致重启redis无法清除缓存
  8. P1661 扩散
  9. C++设计模式 之 “接口隔离” 模式:Facade、Proxy、Mediator、Adapter
  10. SPOJ Prime or Not - 快速乘 - 快速幂