是否有特定范围的 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 代码点可以检查表情符号?的主要内容,如果未能解决你的问题,请参考以下文章