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
您可能感兴趣
- pythonpulp怎么使用(pyhanlp安装介绍和简单应用)
- python计算1到10的阶乘的和(python计算阶乘和的方法1!+2!+3!+...+n!)
- python3.7手册中文版(Python3.4解释器用法简单示例)
- python面向对象的介绍(Python面向对象思想与应用入门教程类与对象)
- python虚拟变量教程(Python中psutil的介绍与用法)
- python一分钟认识条件判断(对python判断ip是否可达的实例详解)
- python获取网络数据tcp(Python选择网卡发包及接收数据包)
- python类中的数据封装(基于python生成器封装的协程类)
- python人脸识别实战视频(Python学习笔记之图片人脸检测识别实例教程)
- python爬取数据总结(python3爬虫学习之数据存储txt的案例详解)
- 怎么用python获取目录(python 获得任意路径下的文件及其根目录的方法)
- anaconda如何配置python3.7(WIn10+Anaconda环境下安装PyTorch避坑指南)
- python元组和列表的定义(Python基本数据结构与用法详解列表、元组、集合、字典)
- python能把时间转化成毫秒级吗(python 获取毫秒数,计算调用时长的方法)
- python画折线图(python使用Plotly绘图工具绘制水平条形图)
- python操作json格式(详解python 3.6 安装json 模块simplejson)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
- 朋友圈屏蔽你的人,可以直接看淡了(朋友圈屏蔽你的人)
- 金球奖只青睐那些会戴珠宝的女人(金球奖只青睐那些会戴珠宝的女人)
热门推荐
- linux lnmp安装教程(LNMP系列教程之 SSL安装WordPress博客程序下载与安装)
- html5显示中心代码(HTML5中的Web Notification桌面通知功能的实现方法)
- xshell服务器(如何使用Xshell连接云服务器)
- ui界面的测试用例(AmazeUI中模态框的实现)
- html5 canvas 特效(JavaScript canvas实现流星特效)
- app怎样像web一样调试(详解webapp页面滚动卡顿的解决办法)
- vuex中action的值怎么接(vuex中Getter的用法详解)
- dedecms搜索功能怎么设置详细(织梦dedecms文章列表页随机放入广告的方法)
- bootstraptable使用教程(bootstrap Table的使用方法总结)
- python如何读取文件(Python从文件中读取数据的方法讲解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9