Solución:
En Python 2, debes usar u''
literal para crear una cadena Unicode. Además, debes pasar re.UNICODE
marcar y convertir sus datos de entrada a Unicode (por ejemplo, text = data.decode('utf-8')
):
#!/usr/bin/env python
import re
text = u'This dog U0001f602'
print(text) # with emoji
emoji_pattern = re.compile("["
u"U0001F600-U0001F64F" # emoticons
u"U0001F300-U0001F5FF" # symbols & pictographs
u"U0001F680-U0001F6FF" # transport & map symbols
u"U0001F1E0-U0001F1FF" # flags (iOS)
"]+", flags=re.UNICODE)
print(emoji_pattern.sub(r'', text)) # no emoji
Producción
This dog
This dog
Nota: emoji_pattern
coincide solo con algunos emoji (no todos). Vea qué personajes son emoji.
Estoy actualizando mi respuesta a esto por @jfs porque mi respuesta anterior no tuvo en cuenta otros estándares Unicode como latín, griego, etc. StackOverFlow no me permite eliminar mi respuesta anterior, por lo tanto, la estoy actualizando para que coincida con la respuesta más aceptable. a la pregunta.
#!/usr/bin/env python
import re
text = u'This is a smiley face U0001f602'
print(text) # with emoji
def deEmojify(text):
regrex_pattern = re.compile(pattern = "["
u"U0001F600-U0001F64F" # emoticons
u"U0001F300-U0001F5FF" # symbols & pictographs
u"U0001F680-U0001F6FF" # transport & map symbols
u"U0001F1E0-U0001F1FF" # flags (iOS)
"]+", flags = re.UNICODE)
return regrex_pattern.sub(r'',text)
print(deEmojify(text))
Esta fue mi respuesta anterior, no use esto.
def deEmojify(inputString):
return inputString.encode('ascii', 'ignore').decode('ascii')
Si está usando el ejemplo de la respuesta aceptada y aún obtiene errores de “rango de caracteres incorrectos”, entonces probablemente esté usando una compilación limitada (consulte esta respuesta para obtener más detalles). Una versión reformateada de la expresión regular que parece funcionar es:
emoji_pattern = re.compile(
u"(ud83d[ude00-ude4f])|" # emoticons
u"(ud83c[udf00-uffff])|" # symbols & pictographs (1 of 2)
u"(ud83d[u0000-uddff])|" # symbols & pictographs (2 of 2)
u"(ud83d[ude80-udeff])|" # transport & map symbols
u"(ud83c[udde0-uddff])" # flags (iOS)
"+", flags=re.UNICODE)