Python3检查Unicode字符是不是不存在[重复]

Posted

技术标签:

【中文标题】Python3检查Unicode字符是不是不存在[重复]【英文标题】:Python3 Check if Unicode Character is Not Present [duplicate]Python3检查Unicode字符是否不存在[重复] 【发布时间】:2016-07-20 13:47:14 【问题描述】:

我有一个关于查找系统字体中是否存在 unicode 字符的问题。

>>> chr(9966)
'⛮'
>>> chr(9955)
'⛣'
>>> chr(9955) == chr(9966)
False

基本上,我想做的是检查值是否为。 python中有什么方法可以判断该值是否为

编辑:我现在明白 unicode 字符不是固有定义或未定义的。但是,有没有办法检查某个字符是否存在于某种字体中?我在 OS X 上。

【问题讨论】:

它实际上并没有打印一个空字符串,它正在打印 unicode 字符(碰巧没有出现)。在我的系统上,我看到一个方框中有一个问号。 “系统上未定义”是什么意思?你的意思是“不存在于字体中”? (顺便说一句,对我来说,这两个角色都很好)。 这可能是相关的***.com/questions/4458696/… 为了澄清上述内容,您没有看到“一个看起来像盒子的字符”(它本身就是一个有效的 Unicode 字符 )。如果要求的字符不存在于碰巧用于显示的字体中,您将看到 默认字符。通常,Python 不知道您的系统正在使用什么字体,因此它无法以某种方式将字符“更改”为一个框(您似乎认为它确实如此),也无法告诉您该字符是否可用(除非您告诉它使用什么字体)。 @alexis 我在 Mac 上 【参考方案1】:

这与使用的字体及其对 Unicode 的支持有关,而不是 python 本身。 我的系统上没有这些字符。

使用库unidecode,任何未知字符似乎都返回为[?]

from unidecode import unidecode
>>> unidecode(chr(9966))
'[?]'
>>> unidecode(chr(9955))
'[?]'
>>> unidecode(chr(9955)) == unidecode(chr(9966))
True

此方法依赖外观来获得等效的 ascii。 其他一些 Unicode 字符可以在 [?] 附近找到,因此您可能会得到一些误报。

【讨论】:

以上是关于Python3检查Unicode字符是不是不存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object

python3中的编码

python - unicode编码冲突

Python2与python3中字符串的区别

如何检查字节数组是不是包含 Java 中的 Unicode 字符串?

检查 unicode 值是不是在 Erlang 二进制字符串中?