位置: 编程技术 - 正文

python黑魔法之编码转换(python黑魔法手册)

编辑:rootadmin

推荐整理分享python黑魔法之编码转换(python黑魔法手册),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python魔法方法str,python魔法方法str,python 黑魔法指南,python 黑魔法,黑魔法的代码,python 黑魔法,python 黑魔法,python黑魔法手册 pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

我们在使用其他语言的库做编码转换时,对于无法理解的字符,通常的处理也只有两种(或三种):

抛异常 替换成替代字符 跳过

但是在复杂的现实世界中,由于各种不靠谱,我们处理的文本总会出现那么些不和谐因素,比如混合编码。在这种情况下,又回到了上面的处理办法。

那么问题来了,python有没有更好地办法呢?

答案是,有!

python的编码转换流程实际上是两段式转换:

首先将字符串从原始编码转换成unicode。再将unicode转换成目标编码。

第一步我们一般采用decode()或者 unicode() 这两个函数完成。第二步我们使用encode()函数完成。

在这里我们说的黑魔法就是在第一步实现。

python黑魔法之编码转换(python黑魔法手册)

decode和unicode函数都有一个叫做errors的可选参数。看看官方的描述:

errors may be given to set a different error handling scheme. Default is 'strict' meaning that encoding errors raise a UnicodeDecodeError. Other possible values are 'ignore' and 'replace' as well as any other name registered with codecs. register_error that is able to handle UnicodeDecodeErrors.

这个参数通常有三种值:

strict 默认值。如果出现编码错误,则会抛出UnicodeDecodeError。 ignore 跳过。 replace 用&#;替换。

好了,看到最后一句话了吗?好戏上演了!

模块codec有一个函数叫做register_error。他的作用让用户可以注册自定义的errors处理方法。用来处理UnicodeDecodeError。

我们看看函数原型:

name: 错误处理的名称。用以填写在decode函数的error参数中。error_handler: 处理函数。该函数接受一个异常参数。返回一个tuple,该tuple有2个元素,第一个是纠错后的字符串,第二个是继续decode的起始位置

有了上面的基本概念。我们看下具体实现:

上面这个是我从网上copy的。开始我觉得很不错,但是后来发现是个很不经推敲的算法。比如utf8和gbk在前两个字节就有交集的部分。当一个utf8的字符串以gbk编码decode的时候,出现错误是从第三个字节开始(前两个字节也能够在gbk编码范围中对应到一个汉字)。如:

所以针对这种情况,做了下改进:

当然,这个逻辑其实还是不够严谨的。虽然对于这种混合编码这种畸形活处理有点较真儿。不过既然python提供这样的能力,大家可以一起来讨论下,我们怎么可以做的更好&#;

在MAC上搭建python数据分析开发环境 最近工作转型到数据开发领域,想在本地搭建一个数据开发环境。自己有三年python开发经验,马上想到使用numpy、scipy、sklearn、pandas搭建一套数据开发环

python中的编码知识整理汇总 问题在平时工作中,遇到了这样的错误:UnicodeDecodeError:'ascii'codeccan'tdecodebyte想必大家也都碰到过,很常见。于是决定对python的编码做一个整理和学习。

Python函数中*args和**kwargs来传递变长参数的用法 单星号形式(*args)用来传递非命名键可变参数列表。双星号形式(**kwargs)用来传递键值可变参数列表。下面的例子,传递了一个固定位置参数和两个变长参

标签: python黑魔法手册

本文链接地址:https://www.jiuchutong.com/biancheng/381311.html 转载请保留说明!

上一篇:Python编程中对文件和存储器的读写示例(python文法)

下一篇:在MAC上搭建python数据分析开发环境(mac怎么编写python)

  • 牲畜资产科目包括哪些
  • 员工辞退补偿金需要交个税吗
  • 未开票收入以后必须开票吗
  • 福利费的支出要求及标准
  • 母子公司好处
  • 公司老板个人卡收款 出纳有责任吗
  • 开给天猫的服务费分录如何做
  • 发票认证完是不是没开票
  • 公司注销取不到采购发票怎么汇算清缴?
  • 专家评审费如何报销费用
  • 印花税零申报怎么填样本
  • 劳务费备注差额征税是什么意思呢?
  • 开了专票是否交文化事业建设费?
  • 小规模纳税人计提增值税
  • 投资退税申请应怎么写
  • 小区业主委员会归哪个部门管
  • 别人帮我们公司代定机票怎么做账
  • 专用发票验旧后还领不到发票
  • 公司充加油卡发票税额为0 怎么入账
  • 运费发票备注栏样板
  • 已申报未导入什么意思呀
  • 工商注销债务承担
  • 代收代付快递货款需要发票吗,中间差额服务费怎么开票?
  • 文件的类型可以通过什么来区分
  • office2016安全模式
  • service.exe是什么进程
  • 金融资产终止确认是什么意思
  • 两名山地车骑手死亡
  • 前端开发csdn
  • php 装饰器
  • yii2中LinkPager增加总页数和总记录数的实例
  • 资产处置损益要写明细账吗
  • thinkphp常用函数
  • 计提下月工资怎么算
  • yolo v1 pytorch源代码
  • 玻璃深加工企业排名
  • idea配置meaven
  • [深度学习] fast-reid入门教程
  • fping命令参数
  • 兼职人员需要
  • 如何使用首页
  • 如何扣除企业接单费用
  • 进项未认证但已开票怎么办
  • mongodb起源
  • 业务招待费列支不规范
  • 同时安装vs2005团队开发版和sql 2005企业版的方法(downmoon原作)
  • 外购商品用于宣传需要缴纳增值税吗
  • 资产负债表不平衡怎么办
  • 内资非独立核算的企业
  • 一般销售商品收入怎么算
  • 会计人要求
  • 投资性房地产涉及其他综合收益
  • 购买金税盘未抵税怎么办
  • 增值税发票税控开票软件用户密码
  • 没有发票财务报表怎么做
  • 长期应收款是否计提坏账准备
  • 结转成本的方法有几种
  • 关机并重启是怎么回事
  • window10 bitlocker
  • win10系统预览版
  • windows自动执行
  • 巧用护手霜保养皮衣
  • 密码多次错误被锁定怎么办
  • 升级windows8
  • windows怎么更改网络状态
  • jetcar.exe - jetcar是什么进程 有什么作用
  • linux各种命令
  • win8.1核心版密钥
  • win8.1技巧
  • 3366小游戏小
  • es6 new set()
  • angularjs和后端交互
  • shell生成excel文件
  • itween常用方法
  • js发送请求的几种方式
  • jquery+ajax实现直接提交表单实例分析
  • 安卓 旋转屏幕
  • 浙江社保费申报说无有效三方协议信息
  • 淘宝要补偿怎么回复
  • 什么叫以物易物
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设