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实现list反转实例汇总
Nov 11 Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
python中Switch/Case实现的示例代码
Nov 09 Python
python-str,list,set间的转换实例
Jun 27 Python
Python拼接字符串的7种方法总结
Nov 01 Python
Python3最长回文子串算法示例
Mar 04 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
Python私有属性私有方法应用实例解析
Sep 15 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
实现获取http内容的php函数分享
2014/02/16 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
Python实现文件内容批量追加的方法示例
2017/08/29 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python 自定义对象的打印方法
2019/01/12 Python
Python中format()格式输出全解
2019/04/12 Python
set在python里的含义和用法
2019/06/24 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
Python占用的内存优化教程
2019/07/28 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
医学专业大学生求职的自我评价
2013/11/27 职场文书
新郎父亲婚宴答谢词
2014/01/11 职场文书
《争吵》教学反思
2014/02/15 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
六一儿童节标语
2014/10/08 职场文书
学习十八大标语
2014/10/09 职场文书
初中团支书竞选稿
2015/11/21 职场文书
六年级数学教学反思
2016/02/16 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
深入详解JS函数的柯里化
2021/06/09 Javascript