如何在python中识别不同颜色/肤色的相同表情符号?

lea*_*ner 4 python unicode python-3.x emoji

如何识别不同颜色的相同表情符号?

示例:应该被认为是相同的

编辑:目前我正在使用表情

import regex
import emoji
exm = "poli kariku fans adi like    sub tharamo"
characters = regex.findall("\X",exm)
for char in character:
  if char in emoji.UNICODE_EMOJI:
     #do something
Run Code Online (Sandbox Code Playgroud)

Mit*_*nal 6

emoji 包上没有可用的方法来处理不同颜色的相同符号。但是,我们可以通过将表情符号名称与常用字符串进行比较来实现这一点(这里是thumbs_up

试试下面的代码。

import regex
import emoji
exm = "poli kariku fans adi like    sub tharamo"
characters = regex.findall("\X",exm)
for char in characters:
  if char in emoji.UNICODE_EMOJI:
      if "thumbs_up" in (emoji.demojize(char)):
          print("It is thumbs_up")
Run Code Online (Sandbox Code Playgroud)

有关支持的表情符号列表及其名称,请参阅此处的源代码。


sna*_*erb 5

每个竖起大拇指的表情符号都以代码点1F44D( 'THUMBS UP SIGN')开头,然后是肤色组件代码点,因此您可以像这样过滤它们:

thumbs_up = chr(0x1F44D) # or '\N{THUMBS UP SIGN}' or just ''
thumbs = filter(lambda c: c.startswith(thumbs_up), characters)
for thumb in thumbs:
    print(thumbs)
Run Code Online (Sandbox Code Playgroud)

输出

thumbs_up = chr(0x1F44D) # or '\N{THUMBS UP SIGN}' or just ''
thumbs = filter(lambda c: c.startswith(thumbs_up), characters)
for thumb in thumbs:
    print(thumbs)
Run Code Online (Sandbox Code Playgroud)


sha*_*678 3

我认为您不需要在您的用例中使用正则表达式,您只需使用表情符号的长度即可:

import emoji

NUM_COLUMNS = 4
TABLE_COLUMN_WIDTH = 18

def is_emoji(s):
    return s in emoji.UNICODE_EMOJI

def is_default_emoji(s):
    return len(s) == 1 and s in emoji.UNICODE_EMOJI

def get_default_emoji(s):
    return s[0] if s in emoji.UNICODE_EMOJI else None

def pretty_print_line(line):
    print(''.join(word.ljust(TABLE_COLUMN_WIDTH) for word in line.split()))

text = "poli kariku fans adi like       sub tharamo"

pretty_print_line("string is_emoji is_default_emoji get_default_emoji")
print("=" * NUM_COLUMNS * TABLE_COLUMN_WIDTH)
for s in text.split():
    pretty_print_line(f'{s} {is_emoji(s)} {is_default_emoji(s)} {get_default_emoji(s)}')
Run Code Online (Sandbox Code Playgroud)

输出:

string            is_emoji          is_default_emoji  get_default_emoji 
========================================================================
poli              False             False             None              
kariku            False             False             None              
fans              False             False             None              
adi               False             False             None              
like              False             False             None              
                True              False                              
                True              False                              
                True              False                              
                True              False                              
                True              False                              
                True              True                               
sub               False             False             None              
tharamo           False             False             None  
Run Code Online (Sandbox Code Playgroud)

您可以使用与您的用例类似的一些逻辑get_default_emoji,因为无论是否存在肤色修改器,它都会返回相同的表情符号。