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