Saltar al contenido

Python: reemplace emojis Unicode con caracteres ASCII

Nuestros mejores programadores agotaron sus reservas de café, por su búsqueda diariamente por la solución, hasta que Emiliano halló la contestación en Beanstalk y ahora la comparte contigo.

Solución:

Con el consejo sobre unicodedata.name y un poco más de investigación me las arreglé para armar esto:

import unicodedata
from unidecode import unidecode

def deEmojify(inputString):
    returnString = ""

    for character in inputString:
        try:
            character.encode("ascii")
            returnString += character
        except UnicodeEncodeError:
            replaced = unidecode(str(character))
            if replaced != '':
                returnString += replaced
            else:
                try:
                     returnString += "[" + unicodedata.name(character) + "]"
                except ValueError:
                     returnString += "[x]"

    return returnString

Básicamente, primero intenta encontrar la representación ASCII más adecuada, si eso falla, intenta usar el nombre Unicode, y si eso falla, simplemente lo reemplaza con algún marcador simple.

Por ejemplo Tomando esto string:

abcdšeđfčgžhÅiØjÆk 可爱!!!!!!!!

Y ejecutando la función:

string = u'abcdšeđfčgžhÅiØjÆk u53efu7231!!!!!!!!U0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f60dU0001f61d'
print(deEmojify(string))

Producirá el siguiente resultado:

abcdsedfcgzhAiOjAEk[x] Que Ai!!!!!!!![SMILING FACE WITH HEART-SHAPED
EYES][SMILING FACE WITH HEART-SHAPED EYES][SMILING FACE WITH
HEART-SHAPED EYES][SMILING FACE WITH HEART-SHAPED EYES][SMILING FACE
WITH HEART-SHAPED EYES][SMILING FACE WITH HEART-SHAPED EYES][SMILING
FACE WITH HEART-SHAPED EYES][FACE WITH STUCK-OUT TONGUE AND
TIGHTLY-CLOSED EYES]

Prueba esto

import unicodedata
print( unicodedata.name(u'U0001f60d'))

el resultado es

SMILING FACE WITH HEART-SHAPED EYES

Eres capaz de añadir valor a nuestro contenido informacional participando con tu experiencia en las interpretaciones.

¡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 *