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中使用Queue和Condition进行线程同步的方法
Jan 19 Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
python实现贪吃蛇游戏
Mar 21 Python
python实现移位加密和解密
Mar 22 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
django框架两个使用模板实例
Dec 11 Python
Python实现AI自动抠图实例解析
Mar 05 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实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python开发之list操作实例分析
2016/02/22 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
安装Python的教程-Windows
2017/07/22 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Python 类的特殊成员解析
2018/06/20 Python
24式加速你的Python(小结)
2019/06/13 Python
基于Python测试程序是否有错误
2020/05/16 Python
函授毕业自我鉴定
2014/02/04 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
PHP RabbitMQ消息列队
2022/05/11 PHP