【问题标题】:Is there a specific range of unicode code points which can be checked for emojis?是否有特定范围的 unicode 代码点可以检查表情符号?
【发布时间】: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 时,它的表都需要重新计算? (我记得在类似问题的另一个答案中提到了这一点。)

标签: python python-2.7 unicode


【解决方案1】:

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

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

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

【讨论】:

  • 请注意,这包括#* 之类的字符,因为具有Emoji=yes 的字符比您预期的要多得多。过滤 Emoji_Presentation=yes 更具选择性,但它可能会排除您认为是表情符号的字符,例如 RIGHT ANGER BUBBLE。
  • 现在可以在正则表达式库中使用。你可以搜索:\p{Emoji=yes}\p{Emoji_Presentation=yes}\p{EPres=yes}\p{Emoji_Modifier=yes}\p{EMod=yes}
猜你喜欢
  • 2023-04-04
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多