使用Collection.Counter对不同颜色的表情符号进行计数 [英] Using collections.Counter to count emojis with different colors

查看:22
本文介绍了使用Collection.Counter对不同颜色的表情符号进行计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Collection tions.Counter类来计算字符串中的表情符号。它通常运行良好,但是,当我引入彩色表情符号时,表情符号的颜色成分与表情符号分开,如下所示:

>>> import collections
>>> emoji_string = "👌🏻👌🏼👌🏽👌🏾👌🏿"
>>> emoji_counter = collections.Counter(emoji_string)
>>> emoji_counter.most_common()
[('👌', 5), ('🏻', 1), ('🏼', 1), ('🏽', 1), ('🏾', 1), ('🏿', 1)]

如何才能使MOST_COMMON()函数返回如下内容:

[('👌🏻', 1), ('👌🏼', 1), ('👌🏽', 1), ('👌🏾', 1), ('👌🏿', 1)]

我使用的是Python3.6

推荐答案

您必须将字符串拆分成单独的群集。每个表情符号实际上是两个代码点;表情符号和一个表情修饰符Fitzpatrick类型X代码点:

>>> print(emoji_string[0])
👌
>>> print(emoji_string[1])
🏻
>>> print(emoji_string[:2])
👌🏻
>>> print(ascii(emoji_string[:2]))
'U0001f44cU0001f3fb'
>>> import unicodedata
>>> unicodedata.name(emoji_string[1])
'EMOJI MODIFIER FITZPATRICK TYPE-1-2'

您可以使用正则表达式来保留带有前面表情符号的表情:

import re

char_with_modifier = re.compile(r'(.[U0001f3fb-U0001f3ff]?)')
split_emoji = char_with_modifier.findall(emoji_string)

并对结果进行计数。

演示:

>>> import re
>>> from collections import Counter
>>> emoji_string = "👌🏻👌🏼👌🏽👌🏾👌🏿"
>>> char_with_modifier = re.compile(r'(.[U0001f3fb-U0001f3ff]?)')
>>> Counter(char_with_modifier.findall(emoji_string))
Counter({'👌🏻': 1, '👌🏼': 1, '👌🏽': 1, '👌🏾': 1, '👌🏿': 1})

这篇关于使用Collection.Counter对不同颜色的表情符号进行计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆