摄影:产品经理又是产品经理自己去吃的烤肉

我们先来看一段代码,这段代码似乎触发了Python的bug:

>>> ? = 1>>> f = 2>>> print(?)

运行效果如下图所示:


我们知道,Python 的变量名是可以使用 Unicode 字符的,也就是非英文字母也可以当做变量名,例如:


如果大家仔细观察,就会发现上面的?和英文字母f不是同一个字符。


那为什么当我们给f赋值为2以后,原来?的值也改变了呢?这是因为,Python 会把所有的变量名转换为它的 NFKC 等价形式。

从Python的官方文档2.3. Identifiers and keywords[1]中,我们可以看到:

All identifiers are converted into the normal form NFKC while parsing; comparison of identifiers is based on NFKC.

转换的原理可以参阅维基百科:Unicode equivalence - Wikipedia[2]

Python已经自带了一个转换的模块,叫做unicodedata,通过它,我们可以把非标准的Unicode字符转成标准的Unicode字符,例如:

>>> import unicodedata>>> unicodedata.normalize('NFKC', '?')'f'>>> unicodedata.normalize('NFKC', '?') == 'f'True

可以看到,手写字符?通过 NFKC 标准转换以后,就是普通的字母f,所以在 Python 里面,如果作为变量名,这两个字符是一样的。

除了英文字符外,中文字符也可以转换。大家应该还记得我之前讲康熙字符那篇文章:康熙部首导致的字典查询异常我们可以使用相同的方式,把康熙部首里面的转换为标准的汉字

>>> unicodedata.normalize('NFKC', '⽐') == '比'True

这样一来,如果你需要做一个服务,它接收用户的输入,但你又不想让用户输入这种长得像中文或者英文,但是却又不是的怪异字符,你就可以使用 NFKC 把它转换为标准的字符。例如,把中文逗号转成英文逗号,把中文分号转成英文分号,把中文冒号转成英文冒号等等:


参考资料

[1]

2.3. Identifiers and keywords: https://docs.python.org/3/reference/lexical_analysis.html#identifiers

[2]

Unicode equivalence - Wikipedia: https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization

python rtsp转换为图片_化异为同,Python 在背后帮你做的转换相关推荐

  1. python文字转图片_技能:如何使用Python将文本转为图片

    更多腾讯海量技术文章,请关注云加社区:https://cloud.tencent.com/developer/column 作者:CDA数据分析师 摘要:有时候,我们需要将文本转换为图片,比如发长微博 ...

  2. python绘制生日快乐图片_祝自己生日快乐 | 利用Python和R分析一年写作

    想不清自己有多久没有过生日了,即便是18岁那年的生日,也是上完课照常回去.或许是我的日子过得过于浑浑噩噩,没有什么可以庆祝,或许我认为过生日是过于矫情的一种行为吧. 但是反刻奇也是一种刻奇,没有必要坚 ...

  3. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  4. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  5. ubuntu下使用python将ppt转成图片_在Ubuntu下,python将PPT和word转换为PDF,ubuntu,pptword,pdf...

    前言: 在我以前的博客中有这么两篇博客,一篇是: python将ppt文件转换为jpg图片 . 这两篇博客都是讲如何将word,ppt转换为图片,但是这些方法都是在win系统中实现的,而在ubuntu ...

  6. 字节数组转换为图片_每日一课 | Python 3 TypeError:无法将“字节”对象隐式转换为str...

    将Python 2套接字示例转换为Python 3 whois.py import sysimport socket s = socket.socket(socket.AF_INET, socket. ...

  7. python风格变换图片_巧用python实现图片转换成素描和漫画格式

    [相关学习推荐:python视频教程] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf ...

  8. python pdf删除图片_【原创】python批量删除pdf图片水印(Xobject)的一种方法

    1.说明: 下载到的pdf总会有一些水印,pdf文件水印添加方式除了acrobat adobe自带的以外,还有很多,所以去除水印方法也很多,这里介绍的也只是一种适用python批量删除图片水印Xobj ...

  9. python 文本文件转图片_使用Python将文本转为图片

    编程派微信号:codingpy 文 / oldj 有时候,我们需要将文本转换为图片,比如发长微博,或者不想让人轻易复制我们的文本内容等时候.目前类似的工具已经有了不少,不过我觉得用得都不是很趁手,于是 ...

最新文章

  1. Linux 下 进程运行时内部函数耗时的统计 工具:pstack,strace,perf trace,systemtap
  2. SelectBox插件
  3. maven依赖循环引用_shiro+spring boot+mybatis启动循环引用问题解决思路和方案
  4. Solaris 下 Oracle impdp 过程中出现的问题
  5. 数据库建表练习(10.11作业)
  6. spoj 2 Prime Generator
  7. hydra安装及使用
  8. 使用Sandcastle创建你的类库文档
  9. 带你认识不一样的Stream,Java8就该这么玩!
  10. Shell 中常用的if 语句总结
  11. 快乐课堂--寓教于乐、老师必备的课堂教学软件
  12. EAS使用后台事务定时执行方法
  13. 阿里云与腾讯云的区别对比
  14. CSS实现自定义虚线
  15. 融云集成一个聊天室页面(vue版本)
  16. 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明
  17. 顾沛《抽象代数》2.0环、子环和商环习题解答
  18. 微软日语输入法用法说明
  19. 数字图像处理与Python实现-图像几何变换-图像金字塔
  20. java中parseint函数_浅谈 js中parseInt函数的解析

热门文章

  1. 我如何使用Python查找有趣的人来关注Medium
  2. 尚学堂java答案解析 第二章
  3. 自然语言处理实践Task1
  4. Python解决滑块验证码
  5. 用 Python 将 QQ 好友头像生成祝福语
  6. SSH详解以及免密登录配置,深入理解
  7. python基本数据类型及语法
  8. Python ' ~ ' (取反) 操作符解释
  9. 【opencv学习】透视变换矩阵
  10. Detectron2 win10踩坑记录