python对于gbk处理(Python 2/3下处理cjk编码的zip文件的方法)
类别:脚本大全 浏览量:1019
时间:2021-10-14 00:40:07 python对于gbk处理
Python 2/3下处理cjk编码的zip文件的方法今天项目中遇到了中文编码的zip文件,处理了蛮长时间,所以记录下,以免下次踩坑。
python2下
python2中读取zip文件,zipfile.zipinfo的filename类型是str,基本上类似于python3中的bytes,即可以被decode为unicode。
所以,要处理中文,只需要将文件名按照编码decode成unicode就好。
|
import zipfile fpath = '/path/to/zip.zip' zfile = zipfile.zipfile(fpath, 'r' ) for fileinfo in zfile.filelist: print fileinfo.filename.decode( 'gb18030' ) # 如果要更加详细的区分bytes/str/unicode的语义 print bytes(fileinfo.filename).decode( 'gb18030' ) |
python3下
python3中,language encoding flag (efs)如果是1,则按照utf8来处理文件编码,efs如果为0,则直接按照cp437解码文件名。这是标准直接规定的。
但是,很多软件在制作zip压缩包的时候,直接使用gb18030或者其他非标准编码格式来编码文件名,所以我们还得将文件名反转为bytes,然后再使用对应的编码方式解码:
|
fpath = '/path/to/zip.zip' zfile = zipfile.zipfile(fpath, 'r' ) for fileinfo in zfile.filelist: print (fileinfo.filename.encode( 'cp437' ).decode( 'gb18030' )) |
方法都有了,那直接根据文件名智能猜测文件编码,然后解压就好。但是由于单个文件名太短,chardet的猜测可能不准,所以我们可以直接将所有的文件名连接起来,猜测编码。
代码请参考 mczip ,兼容python2和python3。
总结
以上所述是小编给大家介绍的python 2/3下处理cjk编码的zip文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://www.robberphex.com/2019/04/1022
您可能感兴趣
- python编写自动发送微信信息(python实现向微信用户发送每日一句 python实现微信聊天机器人)
- python可视化界面实现管理系统(python面向对象实现名片管理系统文件版)
- python爬虫怎么爬取vip资源(Python网络爬虫之爬取微博热搜)
- python字典键对应的值(Python 互换字典的键值对实例)
- pythonpickle使用方法(Python supervisor强大的进程管理工具的使用)
- python怎么给rsa加密(Python生成rsa密钥对操作示例)
- python网页自动化selenium(python利用selenium进行浏览器爬虫)
- python的模块与包与库(Python 中包/模块的 `import` 操作代码)
- python关闭程序强制退出线程(python多线程调用exit无法退出的解决方法)
- python写的工具(python调用虹软2.0第三版的具体使用)
- python面向对象的介绍(Python面向对象思想与应用入门教程类与对象)
- pythonmatplotlib实例(Python3使用Matplotlib 绘制精美的数学函数图形)
- python指定路径创建txt文件(python根据txt文本批量创建文件夹)
- python 简单算法(python实现爬山算法的思路详解)
- python实战方法(Python常用特殊方法实例总结)
- python线程安全队列(Python 限制线程的最大数量的方法Semaphore)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
热门推荐
- centos各种服务器搭建(CentOS下Lighttpd Web服务器安装与配置方法)
- python爬虫经典步骤(详解python爬虫系列之初识爬虫)
- docker端口配置(docker 无法释放端口的解决方案)
- mysql怎么做教材信息管理系统(python+mysql实现学生信息查询系统)
- docker 容器端口查不到(docker容器无法访问宿主机端口的解决)
- redis数据超过可用内存
- docker插件容器使用(Docker容器开jupyter不能访问到的解决方法)
- dell r730服务器安装操作系统(DELL R730服务器配置RAID与安装服务器系统以及域的控制详细图文教程)
- yii2支持php7.2吗(Yii框架通过请求组件处理get,post请求的方法分析)
- 使用docker在linux环境中部署springboot包的教程(使用docker在linux环境中部署springboot包的教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9