unicode - 将任意 unicode 字母数字字符映射到它们的 ascii 等价物
问题描述
当我遇到任意 unicode 字符串时,例如在主题标签中,我只想在其 ascii 等价物的字符串中表达其字母数字组件。例如,
x='€'
将呈现为
x='Patriot'
由于我无法预料此类字符串中可能出现的 unicode,因此我希望该方法尽可能通用。有什么建议么?
解决方案
该unicodedata.normalize
方法可以将 Unicode 代码点转换为规范值。然后,通过ascii
编码运行该值,忽略字节字符串的非 ASCII 值,然后通过ascii
解码再次获取 Unicode 字符串:
>>> x='€'
>>> ud.normalize('NFKC',x).encode('ascii',errors='ignore').decode('ascii')
'Patriot'
如果您需要从字母中删除重音符号,但仍保留基本字母,请'NFKD'
改用。
>>> x='€ô'
>>> ud.normalize('NFKD',x).encode('ascii',errors='ignore').decode('ascii')
'Patriot'
推荐阅读
- r - 为每个单独的 R 导入具有重复列名的文件
- sql - 使用 hive 获取 Avg、p50、p95 和 p99
- git - 排除特定文件夹后如何在 Git 中查看 2 个标签之间的提交历史记录
- reactjs - 使用 Material-UI 构建整个网站的前端
- python - 如何为 Selenium/Python 创建一个文本文件以在没有额外字符问题的情况下读取
- java - 由于配置无效,Firebase 安装无法与 Firebase 服务器 API 通信
- android - 我正在尝试通过 Google Places 在 Google Maps 上实现搜索。但是谷歌搜索出现了
- reactjs - 从 React 组件生成 pdf 作为电子邮件附件
- r - 为什么 dplyr 无法聚合我的数据?
- ios - 将 CocoaPods 添加到 watchOS 目标