如何在 python 中识别不同 colors/skin 语气的相同表情符号?

How to identify same emoji of different colors/skin tone in python?

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

示例:应视为相同

编辑:目前我正在使用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

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")

支持的表情符号列表及其名称请参考源代码here

每个竖起大拇指的表情符号都以代码点 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)

输出




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

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)}')

输出:

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  

对于您的用例,您可以使用类似于 get_default_emoji 的一些逻辑,因为它 returns 相同的表情符号,无论是否存在肤色修饰符。