python转换模块codecs讲解 : GezCode源码站-专业源码源代码,抓包资源整站,互站源码,php源码,java源码,vue源码,游戏源码,直播源码,直播带货,合约源码,合约源码下载,娱乐彩,求购需求,源码出售,源码买卖,源码平台,整站源码下载!GezCode Source Station-Professional source code, package grabbing resources for the entire site, mutual source code, PHP source code, Java source code, Vue source code, game source code, live source code, live streaming with goods, contract source code, contract source code download, entertainment lottery, purchase demand, source code sales, source code trading, source code platform, whole site source code download! - GezCode源码站-专业源码源代码,抓包资源整站,互站源码,php源码,java源码,vue源码,游戏源码,直播源码,直播带货,合约源码,合约源码下载,娱乐彩,求购需求,源码出售,源码买卖,源码平台,整站源码下载!GezCode Source Station-Professional source code, package grabbing resources for the entire site, mutual source code, PHP source code, Java source code, Vue source code, game source code, live source code, live streaming with goods, contract source code, contract source code download, entertainment lottery, purchase demand, source code sales, source code trading, source code platform, whole site source code download!

python转换模块codecs讲解

python转换模块codecs讲解

如果您是本站会员;我们会为您提供技术支持!!!

 
本篇文章给大家带来的内容是关于python中转换模块codecs的讲解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、编码

编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

str1.decode('gb2312')    #将gb2312编码的字符串转换成unicode编码 str2.encode('gb2312')    #将unicode编码的字符串转换成gb2312编码

注意事项:

s=‘中文’ 如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。
在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。
如果字符串是这样定义: s=u’中文’ 则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。只需要直接使用encode方法将其转换成指定编码即可
如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断isinstance(s, unicode) #用来判断是否为unicode

1、查看编码方式

(1)对于我们经常使用的记事本,“文件” -> “另存为”,可查看到当前的编码方式。
(2)用notepad++打开,点击“菜单栏” -> “格式”可以查看到。
(3)UltraEdit:
不同编码的文本,是根据文本的前两个字节来定义其编码格式的,定义如下:
ANSI:        无格式定义;
Unicode:       前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8:        前两字节为EFBB;
这样通过前面两个字节就可以判定出文件的具体格式了。

2、python编码

当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:
原有编码 -> 内部编码 -> 目的编码
python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码位,另一种是UCS-4,它有2147483648g个码位。
判断安装的python是用什么编码方式:

import sys print(sys.maxunicode)

如果输出的值为65535,那么就是UCS-2,如果输出是1114111就是UCS-4编码。
转换成内部码:

c = "风卷残云" print(type(c)) c = bytes(c,encoding='utf-8') print(type(c)) print(c) b = codecs.decode(c, "utf-8") #与c.decode()等效 print(type(b)) print(b) print(c.decode())

输出:

<class 'str'> <class 'bytes'> b'xe9xa3x8exe5x8dxb7xe6xaex8bxe4xbax91' <class 'str'> 风卷残云 风卷残云

3、codecs模块

codecs专门用作编码转换。通过它的接口是可以扩展到其他关于代码方面的转换。
在python3.x中可以直接将bytes类型的数据转换成其他编码格式,而不用手动先转成unicode。

import codecs a = "我爱你"  # 创建utf-8编码器 look = codecs.lookup('utf-8') type(a) a = bytes(a,encoding='utf-8') b = look.decode(a)  print(b)

输出:

('我爱你', 9)

返回的元组中b[0]是数据,b[1]是长度。
** 用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode**

f = codecs.open(filepath, 'r', 'utf8')

读取方式有很多种,这里的f是可以用for循环遍历的,当然也可以直接用readline或者readlines函数方法来读取。

f = codecs.open(filepath, 'r', 'utf8')

读取方式有很多种,这里的f是可以用for循环遍历的,当然也可以直接用readline或者readlines函数方法来读取。

#for i in f: #    print(i) #f.readline() #f.read() #f.readlines()

 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开/商品支付,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

可以

常见问题

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

我们将24小时内回复。
取消
python转换模块codecs讲解-海报

分享本文封面