2011-01-24 18 views
5

Estoy teniendo un problema en la acentuación de Python expresión regular, que estoy haciendo lo siguiente intento:Problema con caracteres acentuados

import re 
ER = re.compile(r'\w', re.L) 
print(ER.sub('.','Maçã')) 

..çã 

incluso utilizando la re.compile pasar la configuración regional como argumento, los acentos son no reconocido. ¿Alguien ha tenido este problema?

Gracias!

+2

¿Quizás alguien que entiende brasileño puede traducir esta publicación al inglés? –

Respuesta

4

Será mejor que use re.U bandera unicode.

Si usando Python 2.x también es necesario especificar la cadena como Unicode, es decir

print(ER.sub('.', u'Maçã')) 
+0

Para mí, esto solo funciona para python3 - en 2.7, obtengo '... . ' – Kimvais

+1

@Kimvais: en Python 2, es posible que también necesite marcarlo como una cadena unicode: 'u'Maçã'' –

+0

Intenté usar re.U de esta manera, pero no funcionó. Tengo el mismo problema. Intenté obtener mi ubicación predeterminada: locale.getdefaultlocale() , me devolvió >> ('pt_BR', 'UTF8') –

4

De http://www.regular-expressions.info/python.html

Por defecto, el motor de expresiones regulares de Python sólo tiene en cuenta las letras A a la Z, los dígitos del 0 al 9, y el guión bajo como "caracteres de palabra". Especifique el indicador re.L o re.LOCALE para hacer que \ w coincida con todos los caracteres que se consideran letras dada la configuración regional actual. Alternativamente, puede especificar re.U o re.UNICODE para tratar todas las letras de todos los scripts como caracteres de palabra. La configuración también afecta los límites de las palabras.

Intente utilizar re.UNICODE.

0

¡Tengo el problema! Intentaba usar este código en el caparazón. Por lo tanto, tengo que usar de esta manera: '.'

import re ER = re.compile (r '\ w', re.L) ER.sub (, Unicode (maca, 'utf -8 '))

Muchas gracias !!! :)

Cuestiones relacionadas