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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python中的变量和作用域详解
Jul 13 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
python实现小球弹跳效果
May 10 Python
python实现梯度法 python最速下降法
Mar 24 Python
python logging通过json文件配置的步骤
Apr 27 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
python 实现图像快速替换某种颜色
Jun 04 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
python模板入门教程之flask Jinja
Apr 11 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
php文件操作相关类实例
2015/06/18 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
python 队列详解及实例代码
2016/10/18 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
python实现事件驱动
2018/11/21 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
如何更优雅地写python代码
2019/07/02 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python调用JavaScript代码的方法
2020/10/27 Python
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
自我鉴定模板
2013/10/29 职场文书
理货员的岗位职责
2013/11/23 职场文书
销售经理工作职责范文
2013/12/03 职场文书
领导接待方案
2014/03/13 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
学校开学标语
2014/10/06 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技