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探索之爬取电商售卖信息代码示例
Oct 27 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
解读python如何实现决策树算法
Oct 11 Python
简单了解django索引的相关知识
Jul 17 Python
Django REST framework 视图和路由详解
Jul 19 Python
wxpython绘制音频效果
Nov 18 Python
Python中包的用法及安装
Feb 11 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
使用Django实现商城验证码模块的方法
Jun 01 Python
Python实现仓库管理系统
May 30 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
初识Laravel
2014/10/30 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
JS 对象介绍
2010/01/20 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
python交互式图形编程实例(一)
2017/11/17 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
营业员演讲稿
2013/12/30 职场文书
商场中秋节广播稿
2014/01/17 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers