python中转换模块codecs的讲解(附示例)

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

0、编码

编码转换时,通常需要以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; 
这样通过前面两个字节就可以判定出文件的具体格式了。

立即学习“Python免费学习笔记(深入)”;

2、python编码

当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:
原有编码 -> 内部编码 -> 目的编码

python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码位,另一种是UCS-4,它有2147483648g个码位。

判断安装的python是用什么编码方式:

import sysprint(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())

登录后复制

输出:

b'风卷残云'风卷残云风卷残云

登录后复制

3、codecs模块

codecs专门用作编码转换。通过它的接口是可以扩展到其他关于代码方面的转换。

在python3.x中可以直接将bytes类型的数据转换成其他编码格式,而不用手动先转成unicode。

import codecsa = "我爱你" # 创建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函数方法来读取。

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

登录后复制

以上就是python中转换模块codecs的讲解(附示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2260174.html

(0)
上一篇 2025年2月27日 05:26:50
下一篇 2025年1月4日 00:46:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中顺序表算法复杂度的相关知识介绍

    本篇文章给大家带来的内容是关于Python中顺序表算法复杂度的相关知识介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一.算法复杂度的引入 对于算法的时间和空间性质,最重要的是其量级和趋势,所以衡量其复杂度的函数常量因…

    2025年2月27日
    200
  • Python中is和==有何区别?Python中is和==的区别介绍

    本篇文章给大家带来的内容是关于python中is和==有何区别?python中is和==的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区…

    编程技术 2025年2月27日
    200
  • 浅谈有关python的面向对象编程(代码示例)

    本篇文章给大家带来的内容是浅谈有关python的面向对象编程(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 一、第一个案例—创建类 #__author:”吉”#date: 2018/10/27 0…

    编程技术 2025年2月27日
    200
  • python中文件操作的相关内容总结(附示例)

    本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文…

    编程技术 2025年2月27日
    200
  • python什么是递归?两种优先搜索算法的实现 (代码示例)

     本篇文章给大家带来的内容是介绍python什么是递归?两种优先搜索算法的实现 (代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。  一、递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递…

    2025年2月27日 编程技术
    200
  • 浅谈python学习之字符编码与字符串

    本篇文章给大家带来的内容是浅谈python学习之字符编码与字符串。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 字符编码是什么? 例如汉字“中”,可以用以下表示 十进制:20013 二进制:01001110 001011…

    编程技术 2025年2月27日
    200
  • python中numpy的array数据类型有哪些?(代码详解)

    本篇文章给大家带来的内容是介绍python中numpy的array数据类型有哪些?(代码详解)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 import numpy as np#创建# 创建一维数组a = np.arr…

    编程技术 2025年2月27日
    200
  • python数据竖着怎么变横的?

    python数据竖着变横的的方法:使用zip()函数,类似矩阵转置的过程,将竖状数据变为横状数据;语法“zip([iterable, …])”。该函数将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 pytho…

    2025年2月27日
    200
  • python tuple有什么用

    Python中tuple(元组)的作用:作为参数传递给函数调用、或是从函数调用那里获得参数时,保护其内容不被外部接口修改。通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。 Python是一种计算机程序语…

    2025年2月27日 编程技术
    200
  • 初学python看什么书?

    初学python可以看:《Python编程:入门到实践》、《Python基础教程》、《笨办法学Python》、《Python语言及其应用》、《Python编程入门》、《父与子的编程之旅:与小卡特一起学Python 》等等。 Python入门…

    2025年2月27日 编程技术
    200

发表回复

登录后才能评论