2011-01-24 20 views
5

Sto avendo un problema sulla accentuazione di Python espressioni regolari, sto facendo il seguente tentativo:problema con i caratteri accentati

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

..çã 

anche utilizzando il re.compile passando il locale come un argomento, gli accenti sono non riconosciuto. Qualcuno ha avuto questo problema?

Grazie!

+2

Forse qualcuno che capisce il brasiliano può tradurre questo post in inglese? –

risposta

4

È meglio usare il flag unicode re.U.

Se si utilizza Python 2.x è inoltre necessario specificare la stringa come unicode, cioè

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

Per me, questo funziona solo per python3 - su 2.7, ottengo '... . ' – Kimvais

+1

@Kimvais: In Python 2, potresti anche dover contrassegnarlo come una stringa unicode: 'u'Maçã'' –

+0

Ho provato a usare re.U in questo modo, ma non ha funzionato. Ho avuto lo stesso problema. Ho provato a ottenere la mia posizione predefinita: locale.getdefaultlocale() , ha restituito >> ('pt_BR', 'UTF8') –

4

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

Per impostazione predefinita, il motore regex di Python considera solo le lettere dalla A alla Z, le cifre da 0 a 9 e il carattere di sottolineatura come "caratteri parola". Specificare il flag re.L o re.LOCALE per far corrispondere \ w tutti i caratteri considerati lettere in base alle impostazioni locali correnti. In alternativa, è possibile specificare re.U o re.UNICODE per trattare tutte le lettere di tutti gli script come caratteri di parole. L'impostazione influisce anche sui limiti delle parole.

Provare a utilizzare re.UNICODE.

0

Ho avuto il problema! Stavo cercando di usare questo codice nella shell. Così, ho bisogno di usare in questo modo: ' '

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

Grazie mille !!! :)

Problemi correlati