Je pense qu'il est important de souligner que les réponses précédentes ne fonctionneront pas avec des emojis comme , car ils sont composés de 4 emojis, et en utilisant ... in emoji.UNICODE_EMOJI
renverra 4 émojis différents. Même chose pour les emojis avec une couleur de peau comme .
Ma solution
Inclure le emoji
et regex
modules. Le module regex permet de reconnaître grappes de graphèmes (séquences de points de code Unicode rendues comme un seul caractère), nous pouvons donc compter les emojis comme
import emoji
import regex
def split_count(text):
emoji_list = []
data = regex.findall(r'\X', text)
for word in data:
if any(char in emoji.UNICODE_EMOJI['en'] for char in word):
emoji_list.append(word)
return emoji_list
Pruebas
avec plus d'emojis avec la couleur de la peau :
line = [" me así, se ds hello emoji hello how are you today"]
counter = split_count(line[0])
print(' '.join(emoji for emoji in counter))
sortie :
Inclure les drapeaux
Si vous voulez inclure des drapeaux, comme la gamme Unicode serait de a alors ajoutez :
flags = regex.findall(u'[\U0001F1E6-\U0001F1FF]', text)
à la fonction ci-dessus, et return emoji_list + flags
.
Véase cette réponse à "Une regex en python qui correspond à la classe de caractères de l'indicateur régional". pour plus d'informations sur les drapeaux.
Pour les plus récents emoji
versions
pour fonctionner avec les emoji >= v1.2.0, vous devez ajouter un spécificateur de langue (par ex. en
comme dans le code ci-dessus) :
emoji.UNICODE_EMOJI['en']
0 votes
Les liens stackoverflow.com/q/26568722/674039 et stackoverflow.com/q/35404144/674039