Saltar al contenido

¿Cómo extraer todos los emojis del texto?

Posteriormente a mirar en diversos repositorios y sitios webs al final hallamos la resolución que te mostraremos ahora.

Solución:

Puedes usar el emoji Biblioteca. Puede verificar si un solo punto de código es un punto de código emoji verificando si está contenido en emoji.UNICODE_EMOJI.

import emoji

def extract_emojis(s):
  return ''.join(c for c in s if c in emoji.UNICODE_EMOJI)

Creo que es importante señalar que las respuestas anteriores no funcionarán con emojis como ‍‍‍ , porque consta de 4 emojis y usando ... in emoji.UNICODE_EMOJI devolverá 4 emojis diferentes. Lo mismo para emojis con color de piel como .

Mi solución incluye el emoji y regex módulos. El módulo de expresiones regulares admite el reconocimiento de grupos de grafemas (secuencias de puntos de código Unicode representados como un solo carácter), por lo que podemos contar emojis como ‍‍‍

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 for char in word):
            emoji_list.append(word)

    return emoji_list

Probando (con más emojis con color de piel):

line = ["  me así, se  ds  hello ‍ emoji hello ‍‍‍ how are  you today"]

counter = split_count(line[0])
print(' '.join(emoji for emoji in counter))

producción:

      ‍ ‍‍‍   

Editar:

Si desea incluir banderas, como el rango Unicode sería de a , entonces agregue:

flags = regex.findall(u'[U0001F1E6-U0001F1FF]', text) 

a la función anterior, y return emoji_list + flags.

Consulte esta publicación para obtener más información sobre las banderas.

Si no desea usar una biblioteca externa, como una forma de Python, simplemente puede usar expresiones regulares y re.findall() con una expresión regular adecuada para encontrar los emojies:

In [74]: import re
In [75]: re.findall(r'[^ws,]', a_list[0])
Out[75]: ['', '', '', '', '', '']

La expresión regular r'[^ws,]' es una clase de carácter negado que coincide con cualquier carácter que no sea una palabra, un espacio en blanco o una coma.

Como mencioné en el comentario, un texto generalmente contiene caracteres de palabras y puntuación que se manejarán fácilmente con este enfoque, para otros casos, simplemente puede agregarlos a la clase de caracteres manualmente. Tenga en cuenta que, dado que puede especificar un rango de caracteres en la clase de caracteres, incluso puede hacerlo más corto y más flexible.

Otra solución es, en lugar de una clase de carácter negado que excluye los caracteres que no son emoji, usar una clase de carácter que acepte emojis ([] sin que ^). Dado que hay muchos emojis con diferentes valores Unicode, solo necesita agregar los rangos a la clase de caracteres. Si desea hacer coincidir más emojies, aquí hay una buena referencia que contiene todos los emojies estándar con el rango respectivo para diferentes emojis http://apps.timwhitlock.info/emoji/tables/unicode:

Puedes corroborar nuestro cometido escribiendo un comentario y puntuándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *