python :codecs模块简介
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模块简介相关推荐
- python paramiko 模块简介(SSH2协议)
一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...
- Python:常用模块简介(1)
sys模块 >>> sys.platform #返回操作系统平台名称 'win32' >>> sys.stdin #输入相关 <open file '< ...
- Python 常用模块简介
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- python ipaddress模块简介
文章目录 原著 概述 创建Address/Network/Interface 1. IP地址 2. 网段地址 3. 主机接口(CIDR) Address/Network/Interface成员函数 获 ...
- Python pickle 模块简介
pickle 模块实现用于序列化和反序列化 Python 对象结构的二进制协议."pickling"是将 Python 对象层次结构转换为字节流的过程,"unpickli ...
- python codecs模块
https://www.cnblogs.com/hester/p/5465338.html
- python codecs模块(用于执行编码转换之类的)
用于执行编码转换 参考文章:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框
- Python sys模块 - Python零基础入门教程
目录 一.Python sys 模块简介 二.Python sys 模块使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 ...
- Python PrettyTable 模块
Python PrettyTable 模块 Python PrettyTable 模块 简介 安装 示例 使用 创建表 直接创建 从已有文件创建 CSV HTML SQL 添加元素 按行添加 按列添加 ...
最新文章
- python如何自定义函数_python基础之函数(自定义函数)
- HTML5画布(CANVAS)速查简表
- HALCON基础知识
- store下拉框同步_关于选择主下拉框后~后面的下拉框跟着同步一起变化的问题~~...
- 妈咪,我找到了!15个实用的Linux find命令示例
- linux一步一脚印---mv命令
- 知乎人均985?Python爬50W数据,BI做出可视化后,我有了答案
- Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)
- 机器视觉运动控制一体机应用例程|芯片引脚缺陷检测系统
- Linux 安装kafka的库librdkafka
- MAXScript概况
- eda技术试卷_EDA技术试题库
- 计算机英语中paste表示,计算机英语常用词汇
- 肖特基二极管焊接注意事项和判断正负极的方法
- PowerBuilder 部署iis报错:IIS is not acessblee Please check the server address and port number.
- 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf
- java 手动触发gc_java触发full gc的几种情况整理
- 使用Python画小猪佩奇(turtle库)
- office的入门到进阶
- Goroutines和线程对比
热门文章
- php yaf 教程,yaf 入门
- 官方宣布:紫米员工正式变为小米员工
- C语言 题目 1760: 字符序列模式识别
- 偏向锁,轻量级锁,重量级锁(java)
- Canvas画雪花图~
- git登录账号密码错误remote: Incorrect username or password (access token)
- 游戏陪玩平台系统启动页黑屏情况,该如何解决?
- 产品经理知识体系:1.什么是互联网思维?
- 综合网络(华为ensp)
- java setcolumns_AutoGenerator当表里面只有ID字段或者setSuperEntityColumns之后报错