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
Django实现学生管理系统
Feb 26 Python
Python多线程threading模块用法实例分析
May 22 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python安装scipy的步骤解析
Sep 28 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
Python常用编译器原理及特点解析
Mar 23 Python
Django中和时区相关的安全问题详解
Oct 12 Python
python中HTMLParser模块知识点总结
Jan 25 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 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 ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
js文字滚动停顿效果代码
2008/06/28 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
AngularJS基础知识
2014/12/21 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
药学专业大学生个人的自我评价
2013/11/04 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
导游词之桂林山水
2019/09/20 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python