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使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
Python面向对象编程基础实例分析
Jan 17 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/06/05 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
Python文件和流(实例讲解)
2017/09/12 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Python笔记之facade模式
2019/11/20 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
庆祝教师节活动方案
2014/01/31 职场文书
项目申请汇报材料
2014/08/16 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
教师考核评语大全
2014/12/31 职场文书
天坛导游词
2015/02/02 职场文书
起诉意见书范文
2015/05/19 职场文书
幸福来敲门观后感
2015/06/04 职场文书
比赛口号霸气押韵
2015/12/24 职场文书