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 生成目录树及显示文件大小的代码
Jul 23 Python
用pandas按列合并两个文件的实例
Apr 12 Python
解决python删除文件的权限错误问题
Apr 24 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
Python实现京东秒杀功能代码
May 16 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
用vue.js组件模拟v-model指令实例方法
Jul 05 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
django创建超级用户过程解析
Sep 18 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python使用自定义钉钉机器人的示例代码
Jun 24 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
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
判定是否原生方法的JS代码
2013/11/12 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
JS实现拼图游戏
2021/01/29 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
python简单读取大文件的方法
2016/07/01 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
初中班主任评语
2014/04/24 职场文书
广告学专业求职信
2014/06/19 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
公司岗位说明书
2015/10/08 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
python 多态 协议 鸭子类型详解
2021/11/27 Python