位置: 编程技术 - 正文

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)

  • 开票项目与实际项目不符
  • 为什么有的发票税率是3%,有的是1%
  • 期间费用包括资本公积吗
  • 房地产企业所得税汇算清缴
  • 企业所得税特殊性税务重组
  • 餐饮招待怎么入账
  • 税务顾问费怎么做账务处理?
  • 最新工程施工会计处理流程
  • 专票作废后怎样退税
  • 企业申请资产损失需要提供哪些确认证据?
  • 2019一般纳税人租赁费税率
  • 国税登记流程
  • 增值税一般纳税人是什么意思
  • 怎么利用腾讯手机号找人
  • 把u盘变成光盘模式
  • linux 部署
  • c++ 库文件
  • php mktime函数
  • 发票章不清楚可以报销吗
  • php字符串定义
  • 销项负数发票怎么处理
  • 银行存款总账怎么登记图片
  • 劳务所得税怎么计算公式
  • 跨境电商需要缴纳哪些税种
  • 自己搭建网站怎么赚钱
  • 汽车销售行业的税负率是多少
  • 股东垫付款怎么处理
  • android常用的集成开发工具有
  • docker运行多个镜像
  • 看了这篇文章感触很深的说说
  • 学人工智能哪家机构比较好
  • css给div加边框
  • 购买商品发生的费用计入
  • 金税盘报送汇总在哪
  • 营销策划费会计分录
  • php.ini上传限制
  • 股权处置时点
  • 让渡资产属于什么
  • 大额医疗保险计入什么科目
  • 结转制造费用金额
  • 教育类财务工作内容
  • MySQL中distinct与group by语句的一些比较及用法讲解
  • 实际发的工资跟个人所得税不一样怎么办
  • 园林绿化企业属于什么行业
  • 开出银行承兑汇票一张,面值30000元,用于抵付
  • 已经确认收入的商品发生销售折让
  • 上个月的发票未开具
  • 冲销管理费用怎么写凭证
  • 银行代扣出口快递费用
  • 企业收到的财政性补贴要交企业所得税吗
  • 确认代销手续费怎么做账
  • 人力资源外包服务平台
  • 计提应付票据利息10000的会计分录
  • 银行承兑汇票去哪个银行承兑
  • 什么服务费发票可以免税的
  • 总公司中标走子公司账户违法吗
  • 高新技术企业的税收优惠政策
  • Win10控制面板在c盘哪里
  • Win10 Mobile 10549 预览版新功能上手体验视频
  • linux系统中怎么创建目录
  • win7共享设置(详细图文步骤)
  • 鲁大师安装失败怎么回事
  • 快速解决便秘的小妙招
  • 电脑cf截图保存在哪里
  • WIN10系统安装.net报错0x80072f8F
  • js插件大全
  • ie所有版本
  • 查找最近文件操作记录
  • python视频下载
  • Python中的def
  • 江苏省国家税务局电话号码
  • 四川召开延迟退休座谈会
  • 电子税务局个体工商户如何登陆
  • 中国裁判文书怎么查个人案件
  • 纳税人对税务机关做出的征税行为不服的,必须
  • 济南税务开票软件是什么
  • 深圳拖欠工资举报网站
  • 怎样查询自己企业的税管员
  • 信息报送条例
  • 北京市房产查询官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设