Python的codecs模块- 腾讯云开发者社区
文章推薦指數: 80 %
encoding: gb2312 -*- import codecs, sys print ' - ' * 60 # 创建gb2312编码器look = codecs.lookup( " gb2312 " ) # 创建utf-8编码器look2 ...
腾讯云备案控制台腾讯云开发者社区专栏问答沙龙团队主页TVP搜索搜索关闭创作写文章发视频提问登录注册展开腾讯云·社区登录首页专栏问答沙龙团队主页TVP返回腾讯云官网狼啸风云1.5K篇文章Python的codecs模块转到我的清单专栏首页计算机视觉理论及其实现Python的codecs模块10分享分享文章到朋友圈分享文章到QQ分享文章到微博复制文章链接到剪贴板海报分享海报分享Python的codecs模块修改于2022-09-0213:13:47阅读5810codecs专门用作编码转换。
#-*-encoding:gb2312-*-
importcodecs,sys
print'-'*60
#创建gb2312编码器
look=codecs.lookup("gb2312")
#创建utf-8编码器
look2=codecs.lookup("utf-8")
a="我爱北京"
printlen(a),a
#把a编码为内部的unicode,但为什么方法名为decode呢,我的理解是把gb2312的字符串解码为unicode
b=look.decode(a)
#返回的b[0]是数据,b[1]是长度,这个时候的类型是unicode了
printb[1],b[0],type(b[0])
#把内部编码的unicode转换为gb2312编码的字符串,encode方法会返回一个字符串类型
b2=look.encode(b[0])
#发现不一样的地方了吧?转换回来之后,字符串长度由14变为了7!现在的返回的长度才是真正的字数,原来的是字节数
printb2[1],b2[0],type(b2[0])
#虽然上面返回了字数,但并不意味着用len求b2[0]的长度就是7了,仍然还是14,仅仅是codecs.encode会统计字数
printlen(b2[0])复制上面的代码就是codecs的使用,是最常见的用法。
另外还有一个问题就是,如果我们处理的文件里的字符编码是其他类型的呢?这个读取进行做处理也需要特殊的处理的。
codecs也提供了方法.#-*-encoding:gb2312-*-
importcodecs,sys
#用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
bfile=codecs.open("dddd.txt",'r',"big5")
#bfile=open("dddd.txt",'r')
ss=bfile.read()
bfile.close()
#输出,这个时候看到的就是转换后的结果。
如果使用语言内建的open函数来打开文件,这里看到的必定是乱码
printss,type(ss)复制
上面这个处理big5的,可以去找段big5编码的文件试试。
------------------------------------------------------------------------------------------------------------------------------------------------------字符的编码是按照某种规则在单字节字符和多字节字符之间进行转换的某种方法。
从单字节到多字节叫做decoding,从多字节到单字节叫做encoding。
在这些规则中经常用到的无非是UTF-8和GB2312两种。
在Python中,codecs模块提供了实现这些规则的方法,通过模块公开的方法我们能够方便地获取某种编码方式的Encoder和Decoder工厂函数(Factoryfunction),以及StreamReader、StreamWriter和StreamReaderWriter类。
使用“importcodecs”导入codecs模块。
codecs模块中重要的函数之一是lookup,它只有一个参数encoding,指的是编码方式的名称,即utf-8或者gb2312等等。
如下示例:>>>importcodecs
>>>t=codecs.lookup("utf-8")
>>>printt
(
codecs模块还提供了方便程序员使用的单独函数,以简化对lookup的调用。
它们是:getencoder(encoding)getdecoder(encoding)getreader(encoding)getwriter(encoding)如果我们只是想获取一种utf-8编码的encoder方法,那么只需要这样做:>>>encoder=codecs.getencoder("utf-8")复制另外,对于StreamReader和StreamWriter的简化,codecs模块提供一个open方法。
相对于built-in对象File的open方法,前者多了三个参数encoding,errors,buffering。
这三个参数都是可选参数,但是对于应用来说,需要明确指定encoding的值,而errors和buffering使用默认值即可。
使用方法如下:>>>fin=codecs.open("e://mycomputer.txt","r","utf-8")
>>>printfin.readline()
这是我的电脑
>>>fin.close()复制总结一下,codecs模块为我们解决的字符编码的处理提供了lookup方法,它接受一个字符编码名称的参数,并返回指定字符编码对应的encoder、decoder、StreamReader和StreamWriter的函数对象和类对象的引用。
为了简化对lookup方法的调用,codecs还提供了getencoder(encoding)、getdecoder(encoding)、getreader(encoding)和getwriter(encoding)方法;进一步,简化对特定字符编码的StreamReader、StreamWriter和StreamReaderWriter的访问,codecs更直接地提供了open方法,通过encoding参数传递字符编码名称,即可获得对encoder和decoder的双向服务。
本文参与腾讯云自媒体分享计划,欢迎热爱写作的你一起参与!本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_36670529复制如有侵权,请联系[email protected]删除。
展开阅读全文编程算法HTTPPython举报点赞1分享登录后参与评论0条评论python模块之codecspython的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码位,另一种是UC...周小董python中codecs模块_python自然语言编码转换模块codecs介绍python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。
全栈程序员站长Codecs模块[通俗易懂]这篇文章主要介绍了python自然语言编码转换模块codecs介绍,codecs专门用作编码转换,通过它的接口是可以扩展到其他关于代码方面的转换,需要的朋友可以...全栈程序员站长codecs模块-完成字符编码致Greatpythoncodecs版权声明:本文为博主原创文章,转载请注明出处。
https://blog.csdn.net/u012436149/article/detail...ke1thPython基于codecs模块实现文件读写案例解析UnicodeDecodeError:‘utf-8’codeccan’tdecodebyte0xbeinposition0:invalid...砸漏Python中使用codecs解决生僻python处理文本的时候时常会遇到生僻字出现的处理异常,查了很多资料,发现codecs可以解决这个问题,这里列举一个从excel中读取数据并写入csv中的实例...py3studyPython-codecs-01-读取文本文件系统:Windows7
语言版本:Anaconda3-4.3.0.1-Windows-x86_64
编辑器:pycharm-community-2016.3....zishendianxiapythonstruct模块_Pythonstruct模块有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用struct来处理c...用户7886150Python-time模块一、pythontime模块的简介
二、pythontime模块函数注意:时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
我们运行“type(time.tim...Python攻城狮python的Pattern模块PatternisawebminingmoduleforthePythonprogramminglanguage.py3studypython的termcolor模块termcolor是一个python包,可以改变控制台输出的颜色,支持各种terminal(WINDOWS的cmd.exe除外)。
周小董Python的pickle模块Python提供了一个叫作Pickle的标准模块,通过它你可以将任何纯Python对象存储到一个文件中,并在稍后将其取回。
这叫作持久地(Persist...benympython的pickle模块该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议。
“Pickling”是将Python对象层次结构转换为字节流的过程,“unpi...狼啸风云python的importlib模块Python提供了importlib包作为标准库的一部分。
目的就是提供Python中import语句的实现(以及__import__函数)。
另外,importl...狼啸风云python的unittest模块unittest库提供了testcases,testsuites,testfixtures,testrunner。
狼啸风云Python的progressbar模块Thepackagecanbeinstalledthroughpip(thisistherecommendedmethod):狼啸风云Python的addict模块addictisaPythonmodulethatgivesyoudictionarieswhosevaluesarebothgett...狼啸风云python模块学习(queue模块的QPriorityQueue类和LifoQueue类继承Queue类然后重写了_init、_qsize、_put、_get这四个类的私有方法py3study更多文章狼啸风云关注专栏文章1.5K阅读量1.8M获赞3.4K作者排名139腾讯云原生专题云原生技术干货,业务实践落地。
云安全最佳实践-创作者计划火热征文中,发布文章赢千元好礼!立即查看腾讯云自媒体分享计划入驻腾讯云开发者社区,共享百万资源包。
立即入驻广告关闭社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于视频介绍社区规范免责声明联系我们友情链接归档问题归档专栏文章归档快讯文章归档关键词归档开发者手册归档开发者手册Section归档腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL数据库SSL证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright©2013-2022TencentCloud.AllRightsReserved.腾讯云版权所有京公网安备11010802017518粤B2-20090059-1扫描二维码扫码关注腾讯云开发者领取腾讯云代金券
延伸文章資訊
- 1cpython/codecs.c at main · python/cpython - GitHub
Python Codec Registry and support functions. Written by Marc-Andre Lemburg ([email protected]). Cop...
- 2Python小坑:open()和codecs.open()区别,以及常见指令和 ...
啥也别说了,用codecs.open()就完事了写贴原因因为接触Python时候已经是Python3.x的年代了,用的文件操作最多的就是with open() as file_:这一段话, ...
- 3codecs --- 编解码器注册和相关基类— Python 3.10.7 說明文件
这个模块定义了标准Python 编解码器(编码器和解码器)的基类并提供对内部Python 编解码器 ... 它们必须是具有与Codec 的 encode() 和 decode() 方法相同接口的...
- 47.11. codecs — 字符编码和解码| 文件系统 - LearnKu
Python Unicode HOWTO 是特别有帮助的。 编码#. 理解编码的最好方式是去查看用不同方式对相同字符串编码产生的字节序列 ...
- 5Python codecs.open方法代碼示例- 純淨天空
Python codecs.open使用的例子?那麽恭喜您, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類 codecs 的 ...