python regex unicode emoji tweets

eliminar unicode emoji usando re en python



regex tweets (1)

No está utilizando la notación correcta para puntos unicode que no son BMP; desea usar /U0001FFFF , una U mayúscula y 8 dígitos:

myre = re.compile(u''['' u''/U0001F300-/U0001F5FF'' u''/U0001F600-/U0001F64F'' u''/U0001F680-/U0001F6FF'' u''/u2600-/u26FF/u2700-/u27BF]+'', re.UNICODE)

Esto se puede reducir a:

myre = re.compile(u''['' u''/U0001F300-/U0001F64F'' u''/U0001F680-/U0001F6FF'' u''/u2600-/u26FF/u2700-/u27BF]+'', re.UNICODE)

ya que tus dos primeros rangos son adyacentes.

Su versión estaba especificando (con espacios adicionales para facilitar la lectura):

[/u1F30 0-/u1F5F F/u1F60 0-/u1F64 F/u1F68 0-/u1F6F F /u2600-/u26FF/u2700-/u27BF]+

Esto se debe a que la secuencia de escape /uxxxx siempre toma solo 4 dígitos hexadecimales, no 5.

El mayor de esos rangos es 0-/u1F6F (desde el dígito 0 hasta ), que cubre una franja muy grande del estándar Unicode.

La expresión corregida funciona, siempre que use un ejecutable Python ancho UCS-4:

>>> import re >>> myre = re.compile(u''['' ... u''/U0001F300-/U0001F64F'' ... u''/U0001F680-/U0001F6FF'' ... u''/u2600-/u26FF/u2700-/u27BF]+'', ... re.UNICODE) >>> myre.sub('''', u''Some example text with a sleepy face: /U0001f62a'') u''Some example text with a sleepy face: ''

El equivalente de UCS-2 es:

myre = re.compile(u''('' u''/ud83c[/udf00-/udfff]|'' u''/ud83d[/udc00-/ude4f/ude80-/udeff]|'' u''[/u2600-/u26FF/u2700-/u27BF])+'', re.UNICODE)

Puede combinar los dos en su secuencia de comandos con un controlador de excepciones:

try: # Wide UCS-4 build myre = re.compile(u''['' u''/U0001F300-/U0001F64F'' u''/U0001F680-/U0001F6FF'' u''/u2600-/u26FF/u2700-/u27BF]+'', re.UNICODE) except re.error: # Narrow UCS-2 build myre = re.compile(u''('' u''/ud83c[/udf00-/udfff]|'' u''/ud83d[/udc00-/ude4f/ude80-/udeff]|'' u''[/u2600-/u26FF/u2700-/u27BF])+'', re.UNICODE)

Traté de eliminar el emoji de un texto de tweet Unicode e imprimir el resultado en Python 2.7 usando

myre = re.compile(u''[/u1F300-/u1F5FF/u1F600-/u1F64F/u1F680-/u1F6FF/u2600-/u26FF/u2700-/u27BF]+'',re.UNICODE) print myre.sub('''', text)

pero parece que casi todos los caracteres se eliminan del texto. He revisado varias respuestas de otras publicaciones, desafortunadamente, ninguna de ellas funciona aquí. ¿Hice algo mal en re.compile ()?

Aquí hay un ejemplo de salida en el que se eliminaron todos los caracteres:

“ '' //./” ! # # # …