最新公告
  • 欢迎您光临剑来源码,购买独家源码,请前往销售大厅!立即加入我们
  • 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()

     

    剑来源码专注于网络资源分享,百度搜索:剑来源码。
    剑来源码 » python转换模块codecs讲解

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    剑来源码
    专注为开发人员提供建站资源

    发表评论

    升级SVIP尊享更多特权立即升级