python使用chardet判断字符串编码的方法


Posted in Python onMarch 13, 2015

本文实例讲述了python使用chardet判断字符串编码的方法。分享给大家供大家参考。具体分析如下:

最近利用python抓取一些网上的数据,遇到了编码的问题。非常头痛,总结一下用到的解决方案。

linux中vim下查看文件编码的命令 set fileencoding
python中一个强力的编码检测包 chardet ,使用方法非常简单。linux下利用pip install chardet实现简单安装

import chardet
f = open('file','r')
fencoding=chardet.detect(f.read())
print fencoding

fencoding输出格式 {'confidence': 0.96630842899499614, 'encoding': 'GB2312'} ,只能判断是否为某种编码的概率。比较准确的结果了。输入参数为str类型。

了解python中str的编码后可以利用decode和encode来实现编码的转换。

一般流程是str利用decode方法根据str的编码将其解码为unicode字符串类型,然后利用encode根据特定的编码将unicode字符串类型转换为特定的编码。python中str和unicode属于两种不同的类型,如下。

一般情况下window默认编码gbk,linux默认编码utf8
python编程中 系统编码,python编码,文件编码 的概念。

系统编码:默认写源码的编辑器的编码方式。它代表源码文件内的所有内容都是根据词方式编码成二进制码流。存入到磁盘中的。linux下通过locale命令查看。

python编码:指python内设置的解码方式。如果不设定的话,python默认的是ascii解码方式。如果python源代码文件中不出现中文的话,这个地方怎么设定应该不会问题。

设定方法:在源码文件开头(一定是第一行):#-*-coding:UTF-8-*-,源码文件的设置解码方式是UTF-8 或者 

import sys
reload(sys)
sys.setdefaultencoding('UTF-8')

文件编码:文本的编码方式,linux下vim利用set fileencoding查看。

一般情况下输出乱码的原因就是 没有按照系统解码的方式进行编码。

比如print s, s类型为str,linux系统下系统默认编码为utf8编码,s在输出前就应该编码为utf8。如果s为gbk编码就应该这样输出。print s.decode('gbk').encode('utf8')才能输出中文。

window下面情况相同,window默认编码为gbk编码,所以s输出前必须编码为gbk。

python处理中一般处理unicode类型。这样输出前直接编码即可。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python抓取京东商城手机列表url实例代码
Dec 18 Python
Python简明入门教程
Aug 04 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
用Pygal绘制直方图代码示例
Dec 07 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
Python依赖包整体迁移方法详解
Aug 15 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
python创建子类的方法分析
Nov 28 Python
python django中8000端口被占用的解决
Dec 17 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
pytorch实现查看当前学习率
Jun 24 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
python根据时间生成mongodb的ObjectId的方法
Mar 13 #Python
python实现根据窗口标题调用窗口的方法
Mar 13 #Python
Python实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 #Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 #Python
Python实现测试磁盘性能的方法
Mar 12 #Python
Python解析xml中dom元素的方法
Mar 12 #Python
Python实现Tab自动补全和历史命令管理的方法
Mar 12 #Python
You might like
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php简单提示框alert封装函数
2010/08/08 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
javascript实现树形菜单的方法
2015/07/17 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
python 获取et和excel的版本号
2009/04/09 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Pytorch中.new()的作用详解
2020/02/18 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
python 追踪except信息方式
2020/04/25 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
英国标准协会商店:BSI Shop
2019/02/25 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
历史专业个人求职信范文
2013/12/07 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
就业证明函
2015/06/17 职场文书
LeetCode189轮转数组python示例
2022/08/05 Python