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中的一些类型转换函数小结
Feb 10 Python
python将文本转换成图片输出的方法
Apr 28 Python
python中sys.argv参数用法实例分析
May 20 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
python dir函数快速掌握用法技巧
Dec 09 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文本转图片自动换行的方法
2013/03/13 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python匹配中文的正则表达式
2016/05/11 Python
深入理解Python中的内置常量
2017/05/20 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python实现函数极小值
2019/07/10 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
电子装配专业毕业生求职信
2014/04/23 职场文书
运动会广播稿200字
2014/10/18 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书