Python - caracteres ¡ y ¿ y Python

 
Vista:

caracteres ¡ y ¿ y Python

Publicado por almuki87 (7 intervenciones) el 18/04/2016 11:53:34
Hola

Tengo un problemita con los caracteres ¡ ¿

Mi programa ahora mismo descarga todo tipo de textos en castellano desde twitter.

Dentro de estos textos tengo que separar los signos de puntuación de las palabras para poder meterlos en una lista y buscar coincidencias.

El problema es que usando expresiones regulares de Python no me identifica los signos de puntuación que normalmente se usan en castellano como por ejemplo ¡ ¿ '(apóstrofe) y no sé cómo hacer que los identifique para separarlos del resto del texto.

Estoy usando expresiones regulares y codificación UTF-8.

mm = re.sub(r"([^\w\s]+)\s", r" \1 ", texto) Todo lo que no sea caracteres alfanuméricos o caracteres de espacio quiero que lo separe como: [espacio]+simbolo+[espacio]. El problema es que con los símbolos que comento no funciona.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

caracteres ¡ y ¿ y Python

Publicado por xve (1646 intervenciones) el 18/04/2016 13:04:57
Hola, prueba esto:

1
2
3
4
5
6
7
8
9
10
import types
...
if type(text)==types.StringType:
	text=unicode(text,"utf-8")
elif type(text)==types.UnicodeType:
	text=text.encode('utf-8')
else:
	text=unicode(text,"utf-8")
 
mm = re.sub(r"([^\w\s]+)\s", r" \1 ", texto)

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

caracteres ¡ y ¿ y Python

Publicado por almuki87 (7 intervenciones) el 20/04/2016 09:26:54
Hola,

He probado la solución que me mandasteis y no me funciona, es decir, no hace lo que yo necesito.

Después de probar muchas soluciones he acabado optando por solucionarlo "a mano".

Para que me separe los signos de puntuación del resto de caracteres y los cuente como un solo string al hacer split le he puesto una lista con todos los signos de puntuación y es como mejor funciona.

1
2
3
def separarPuntuacion(self, texto):
        mm = re.sub(r"([\,\.\-\_\+\*\"\º\ª\%\&\/\(\)\=\?\¿\¡\!\$\{\}\:\;])", r" \1 ", texto) # Es la versión que mejor funciona!!
        return mm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar