codecs模块-完成字符编码

简介: 字符的编码是按照某种规则在单字节字符和多字节字符之间进行转换的某种方法。从单字节到多字节叫做decoding,从多字节到单字节叫做encoding。在这些规则中经常用到的无非是UTF-8和GB2312两种。

在Python中,codecs模块提供了实现这些规则的方法,通过模块公开的方法我们能够方便地获取某种编码方式的Encoder和 Decoder工厂函数(Factory function),以及StreamReader、StreamWriter和StreamReaderWriter类。


lookup函数返回一个包含四个元素的TUPLE,其中t[0]是encoder的函数引用,t[1]是decoder的函数引用,t[2] 是UTF-8编码方式的StreamReader类对象引用,t[3]是UTF-8编码方式的StreamWriter类对象引用相信对Python熟悉的你肯定知道接下来该怎么用它们了。


codecs模块还提供了方便程序员使用的单独函数,以简化对lookup的调用。它们是:

  • getencoder(encoding)
  • getdecoder(encoding)
  • getreader(encoding)
  • getwriter(encoding)
    如果我们只是想获取一种utf-8编码的encoder方法,那么只需要这样做:


另外,对于StreamReader和StreamWriter的简化, codecs模块提供一个open方法。相对于built-in对象File的open方法,前者多了三个参数encoding, errors, buffering。这三个参数都是可选参数,但是对于应用来说,需要明确指定encoding的值,而errors和buffering使用默认值即可。

codecs模块中重要的函数之一是lookup,它只有一个参数encoding,指的是编码方式的名称,即utf-8或者gb2312等等。如下示例:

import codecs
t = codecs.lookup('utf-8')
print(t)
encoder = t[0]
decoder = t[1]
StreamReader = t[2]
StreamWriter = t[3]
print(encoder, decoder, StreamReader, StreamWriter)
with codecs.open('demo.txt', 'r', encoding='utf-8') as f:
    print(f.read())


输出:

<codecs.CodecInfo object for encoding utf-8 at 0x1da55dcc3a8>
<built-in function utf_8_encode> <function decode at 0x000001DA55DDAF28> <class 'encodings.utf_8.StreamReader'> <class 'encodings.utf_8.StreamWriter'>
测试下codecs
[Finished in 0.2s]


https://blog.csdn.net/hmsiwtv/article/details/20400455


相关文章
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第9天】mongoDB查看数据的插入日志
617 4
|
10月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
280 1
|
12月前
|
运维 监控 安全
什么是API?
API全称Application Programming Interface,即应用程序编程接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定,用于传输数据和指令,使应用程序之间可以集成和共享数据资源。
1115 10
|
11月前
|
SQL 分布式计算 Hadoop
Apache Hive 帮助文档
Apache Hive 帮助文档
404 9
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
|
SQL 数据采集 数据挖掘
Pandas DataFrame 基本操作实例100个
Pandas DataFrame 基本操作实例100个
552 1
|
存储 监控 Ubuntu
揭秘 systemd:释放 Linux 服务管理的力量【systemd 一】
揭秘 systemd:释放 Linux 服务管理的力量【systemd 一】
282 0
|
JSON Linux 测试技术
使用Elasticsearch Template实现新索引创建的自动管理
Elasticsearch Template是一种将预定义模板应用于新索引的功能。在索引创建时,它可以自动为新索引应用已定义的模板。Template功能可用于定义索引的映射、设置和别名等。它是一种自动化管理索引创建的方式,使用户可以在大量索引上快速而一致地应用模板。
650 0
|
JSON 网络协议 NoSQL
|
存储 JSON 自然语言处理
6000+字讲透ElasticSearch 索引设计
6000+字讲透ElasticSearch 索引设计
1014 0

热门文章

最新文章