Python3检查Unicode字符是否不存在

3

我有一个问题,想确定系统中的字体是否具有特定的Unicode字符。

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

基本上,我想做的是检查值是否为。有没有办法在Python中找出值是否为

编辑:我现在明白Unicode字符本质上并不是定义或未定义的。但是,有没有一种方法可以检查一个字符是否存在于某个字体中?我使用的是OS X。


它实际上并没有打印空字符串,而是打印了Unicode字符(恰好不显示)。在我的系统上,我看到一个问号在一个框里。 - L3viathan
6
“undefined on the system”是什么意思?你是指“字体中没有该字符”吗?(顺便说一句,对我来说这两个字符都显示正常)。 - Martin Tournoij
7
这可能与您相关。https://dev59.com/i2855IYBdhLWcg3wPBtx - John
1
为了澄清上述内容,您并不是看到“看起来像一个方框的字符”(这本身是一个有效的Unicode字符)。如果所请求的字符在用于显示的字体中不存在,则会看到默认字符。通常情况下,Python不知道您的系统使用的是什么字体,因此它不能以某种方式“更改”字符为方框(您似乎认为它可以),也不能告诉您该字符是否可用(除非您告诉它使用哪个字体)。 - Jongware
@alexis 我用的是Mac电脑。 - Anthony Dito
显示剩余8条评论
1个回答

0
这与所使用的字体及其对Unicode的支持有关,而与Python本身无关。 我的系统上没有这些字符。
使用库unidecode,任何未知字符似乎都会被返回为[?]:
from unidecode import unidecode
>>> unidecode(chr(9966))
'[?]'
>>> unidecode(chr(9955))
'[?]'
>>> unidecode(chr(9955)) == unidecode(chr(9966))
True

这种方法依赖于外观来获取ASCII等效字符。一些其他的Unicode字符可能会被误认为是接近[?],因此可能会得到一些错误的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接