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 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
简单实现Python爬取网络图片
Apr 01 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
python匿名函数的使用方法解析
Oct 10 Python
Python netmiko模块的使用
Feb 14 Python
python如何导入依赖包
Jul 13 Python
用Python selenium实现淘宝抢单机器人
Jun 18 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
用PHP和ACCESS写聊天室(七)
2006/10/09 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
浅谈Python中函数的参数传递
2016/06/21 Python
flask入门之表单的实现
2018/07/18 Python
Python 变量的创建过程详解
2019/09/02 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Python Django view 两种return的实现方式
2020/03/16 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
EJB的几种类型
2012/08/15 面试题
家具厂厂长岗位职责
2014/01/01 职场文书
初中生自我鉴定
2014/02/04 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
质量负责人任命书
2014/06/06 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
总账会计岗位职责
2015/04/02 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书