python :codecs模块简介

python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。

有一点需要清楚的是,当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:

原有编码 -> 内部编码 -> 目的编码

python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码 位,另一种是UCS-4,它有2147483648g个码位。对于这两种格式,python都是支持的,这个是在编译时通过–enable- unicode=ucs2或–enable-unicode=ucs4来指定的。那么我们自己默认安装的python有的什么编码怎么来确定呢?有一个 办法,就是通过sys.maxunicode的值来判断:

import  sys
print(sys.maxunicode)
1114111

如果输出的值为65535,那么就是UCS-2,如果输出是1114111就是UCS-4编码。
我们要认识到一点:当一个字符串转换为内部编码后,它就不是str类型了!它是unicode类型:

a  =   " 风卷残云 "
print(type(a))
<class 'str'>
b  =  a.encode( " utf-8 " )
print(b)
b' \xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91 '

b输出的东西看起来是乱码,那就对了,因为是utf-8的字符串。

好了,该说说codecs模块了,它和我上面说的概念是密切相关的。codecs专门用作编码转换,当然,其实通过它的接口是可以扩展到其他关于代码方面 的转换的,这个东西这里不涉及。

codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换

codecs模块提供一个open方法,三个参数encoding, errors, buffering,这三个参数都是可选参数,但是对于应用来说,需要明确指定encoding的值,而errors和buffering使用默认值即 可。使用方法如下:

import codecs
# 从文件读取数据
data = codecs.open("text.txt", encoding="UTF-8")
print(data)
<codecs.StreamReaderWriter object at 0x107685320>
# 一行一行读取数据
data1 = data.readline()
print(data1)
# 度去完数据要把数据对象进行关闭,从内存里面释放出来
data.close()
python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码 位,另一种是UCS-4,它有2147483648g个码位。对于这两种格式,python都是支持的,这个是在编译时通过--enable- unicode=ucs2或--enable-unicode=ucs4来指定的。那么我们自己默认安装的python有的什么编码怎么来确定呢?有一个 办法,就是通过sys.maxunicode的值来判断:

codecs模块为我们解决的字符编码的处理提供了lookup方法,它接受一个字符编码名称的参数,并返回指定字符编码对应的 encoder、decoder、StreamReader和StreamWriter的函数对象和类对象的引用。为了简化对lookup方法的调用, codecs还提供了getencoder(encoding)、getdecoder(encoding)、getreader(encoding)和 getwriter(encoding)方法;进一步,简化对特定字符编码的StreamReader、StreamWriter和 StreamReaderWriter的访问,codecs更直接地提供了open方法,通过encoding参数传递字符编码名称,即可获得对 encoder和decoder的双向服务

import codecs
t = codecs.lookup("utf-8" )
print(t)
<codecs.CodecInfo object for encoding utf-8 at 0x105629468>
encoder = t[0]
print(encoder)
<built-in function utf_8_encode>
decoder = t[1]
print(decoder)
<function decode at 0x10563f488>
StreamReader = t[2]
print(StreamReader)
<class 'encodings.utf_8.StreamReader'>
StreamWriter = t[3]
print(StreamWriter)
<class 'encodings.utf_8.StreamWriter'>

python :codecs模块简介相关推荐

  1. python paramiko 模块简介(SSH2协议)

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  2. Python:常用模块简介(1)

    sys模块 >>> sys.platform #返回操作系统平台名称 'win32' >>> sys.stdin #输入相关 <open file '< ...

  3. Python 常用模块简介

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  4. python ipaddress模块简介

    文章目录 原著 概述 创建Address/Network/Interface 1. IP地址 2. 网段地址 3. 主机接口(CIDR) Address/Network/Interface成员函数 获 ...

  5. Python pickle 模块简介

    pickle 模块实现用于序列化和反序列化 Python 对象结构的二进制协议."pickling"是将 Python 对象层次结构转换为字节流的过程,"unpickli ...

  6. python codecs模块

    https://www.cnblogs.com/hester/p/5465338.html

  7. python codecs模块(用于执行编码转换之类的)

    用于执行编码转换 参考文章:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框

  8. Python sys模块 - Python零基础入门教程

    目录 一.Python sys 模块简介 二.Python sys 模块使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 ...

  9. Python PrettyTable 模块

    Python PrettyTable 模块 Python PrettyTable 模块 简介 安装 示例 使用 创建表 直接创建 从已有文件创建 CSV HTML SQL 添加元素 按行添加 按列添加 ...

最新文章

  1. python如何自定义函数_python基础之函数(自定义函数)
  2. HTML5画布(CANVAS)速查简表
  3. HALCON基础知识
  4. store下拉框同步_关于选择主下拉框后~后面的下拉框跟着同步一起变化的问题~~...
  5. 妈咪,我找到了!15个实用的Linux find命令示例
  6. linux一步一脚印---mv命令
  7. 知乎人均985?Python爬50W数据,BI做出可视化后,我有了答案
  8. Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
  9. 机器视觉运动控制一体机应用例程|芯片引脚缺陷检测系统
  10. Linux 安装kafka的库librdkafka
  11. MAXScript概况
  12. eda技术试卷_EDA技术试题库
  13. 计算机英语中paste表示,计算机英语常用词汇
  14. 肖特基二极管焊接注意事项和判断正负极的方法
  15. PowerBuilder 部署iis报错:IIS is not acessblee Please check the server address and port number.
  16. 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf
  17. java 手动触发gc_java触发full gc的几种情况整理
  18. 使用Python画小猪佩奇(turtle库)
  19. office的入门到进阶
  20. Goroutines和线程对比

热门文章

  1. php yaf 教程,yaf 入门
  2. 官方宣布:紫米员工正式变为小米员工
  3. C语言 题目 1760: 字符序列模式识别
  4. 偏向锁,轻量级锁,重量级锁(java)
  5. Canvas画雪花图~
  6. git登录账号密码错误remote: Incorrect username or password (access token)
  7. 游戏陪玩平台系统启动页黑屏情况,该如何解决?
  8. 产品经理知识体系:1.什么是互联网思维?
  9. 综合网络(华为ensp)
  10. java setcolumns_AutoGenerator当表里面只有ID字段或者setSuperEntityColumns之后报错