是否有特定范围的 unicode 代码点可以检查表情符号?

Posted

技术标签:

【中文标题】是否有特定范围的 unicode 代码点可以检查表情符号?【英文标题】:Is there a specific range of unicode code points which can be checked for emojis? 【发布时间】:2016-12-08 09:44:24 【问题描述】:

表情符号是否占据明确定义的 unicode 范围?

而且,在 python 2.7 中是否有确定的方法来检查代码点是否是表情符号?

我似乎找不到任何关于此的信息。一些消息来源指出了这个范围:

\U0001f600-\U0001f650

但是例如,????有码位

\U0001f918

在这个范围之外。

谢谢。

【问题讨论】:

可能值得调查:github.com/mathiasbynens/emoji-regex 他们正在动态生成正则表达式以考虑更新表情符号的范围, 我本来想问你怎么定义什么是或不是表情符号,但显然这实际上是 Unicode 标准定义的东西。 Python 的 Unicode 支持不是内置的吗?意思是,每次 Unicode.org 添加另一个 SMILING KITTY 时,它的表都需要重新计算? (我记得在类似问题的另一个答案中提到了这一点。) 【参考方案1】:

regex 支持通过 Unicode 属性进行匹配,但不幸的是它不(还没有?)支持emoji-specific properties。当它这样做时,找到它们将很简单:

>>> regex.match(ur'\PEmoji=yes', u'?') # NOTE: Doesn't (yet) work

与此同时,here's the emoji table from unicode.org。

【讨论】:

请注意,这包括#* 之类的字符,因为具有Emoji=yes 的字符比您预期的要多得多。过滤 Emoji_Presentation=yes 更具选择性,但它可能会排除您认为是表情符号的字符,例如 RIGHT ANGER BUBBLE。 现在可以在正则表达式库中使用。你可以搜索:\pEmoji=yes\pEmoji_Presentation=yes\pEPres=yes\pEmoji_Modifier=yes\pEMod=yes

以上是关于是否有特定范围的 unicode 代码点可以检查表情符号?的主要内容,如果未能解决你的问题,请参考以下文章

是否有Unicode字符名称的标准化翻译?

ORACLE SQL - 如何检查时间是不是在特定范围内?

如何在 fontconfig 中设置每个 Unicode 范围/代码点的字体?

如何通过套接字检查特定网络中的IP是否存在?

C# - 确定IP地址范围是否包含特定地址

Python特定的数据类型检查