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 相关文章推荐
详解用TensorFlow实现逻辑回归算法
May 02 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
python实现猜数字小游戏
Mar 24 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
django中瀑布流写法实例代码
Oct 14 Python
python__new__内置静态方法使用解析
Jan 07 Python
利用python绘制数据曲线图的实现
Apr 09 Python
Keras 使用 Lambda层详解
Jun 10 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 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
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
幼儿教师个人求职信范文
2013/09/21 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
认错检讨书
2014/10/02 职场文书
小学教师个人总结
2015/02/05 职场文书
科级干部培训心得体会
2016/01/06 职场文书
MySQL注入基础练习
2021/05/30 MySQL
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers