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判断windows隐藏文件的方法
Mar 21 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
用Python代码来解图片迷宫的方法整理
Apr 02 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python实现计算最小编辑距离
Mar 17 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
基于Python函数和变量名解析
Jul 19 Python
django中瀑布流写法实例代码
Oct 14 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
将python字符串转化成长表达式的函数eval实例
May 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
php 变量未定义等错误的解决方法
2011/01/12 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php for 循环使用的简单实例
2016/06/02 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
python 排列组合之itertools
2013/03/20 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python妙用之编码的转换详解
2017/04/21 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
django+echart数据动态显示的例子
2019/08/12 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
详解Python中的路径问题
2020/09/02 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
高中打架检讨书
2014/02/13 职场文书
门面房租房协议书
2014/08/20 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript