博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python每日一练0015
阅读量:6222 次
发布时间:2019-06-21

本文共 779 字,大约阅读时间需要 2 分钟。

问题

如何比较两个字面一样,但字节不一样的字符串

例如:

>>> a = u'\u4eba\u53e3\u3058\u3093\u3053\u3046\u306b\u81be\u7099\u304b\u3044\u3057\u3083\u3059\u308b'>>> b = u'\u4eba\u53e3\u3058\u3093\u3053\u3046\u306b\u81be\uf9fb\u304b\u3044\u3057\u3083\u3059\u308b'>>> print(a, b, sep='\n')人口じんこうに膾炙かいしゃする人口じんこうに膾炙かいしゃする

这里的a和b字符串是一样的,但仔细观察可以发现,其中a字符串是\u7099,b字符串对应的是\uf9fb

所以虽然a和b是字面上一模一样的字符串,但a实际上和b是不等的

>>> a == bFalse

解决方案

使用unicodedata库的normalize将两个字符串标准化后,再进行比较就可以了

>>> import unicodedata>>> normalize_a = unicodedata.normalize('NFC', a)>>> normalize_b = unicodedata.normalize('NFC', b)>>> print(normalize_a)人口じんこうに膾炙かいしゃする>>> print(normalize_b)人口じんこうに膾炙かいしゃする>>> print(normalize_a == normalize_b)True

讨论

这个问题是最近在Stack Overflow上很热的一个问题,原问题见:

关于Unicode对这个问题的介绍可以见:

来源

Stack Overflow

关注

欢迎关注我的微信公众号:python每日一练

转载地址:http://twgja.baihongyu.com/

你可能感兴趣的文章
每日两道前端面试题 - 20190202
查看>>
用友云开发者中心助你上云系列之在线调试
查看>>
sequelize-cli 使用记录
查看>>
区块链共识协议最详细的分析
查看>>
JS难点之hoist
查看>>
2018的年终总结和2019新目标
查看>>
新近爆出的runC容器逃逸漏洞,用户如何面对?
查看>>
还在用AIDL吗?试试EasyMessenger吧
查看>>
LeetCode 318. Maximum Product of Word Lengths
查看>>
百度PaddlePaddle再获新技能 智能推荐、对话系统、控制领域都能搞定!
查看>>
我对JavaScript中this的一些理解
查看>>
前端知识点——图片
查看>>
别人家的程序员是如何使用 Java 进行 Web 抓取的?
查看>>
Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka
查看>>
Redash本地开发环境搭建
查看>>
npm管理依赖
查看>>
解决浏览器保存密码自动填充问题
查看>>
Python3时间戳转换为指定格式的日期
查看>>
如何理解java里的Comparator和Comparable
查看>>
egg(95上)--egg之购物车列表
查看>>