Receita: Removedor de Acentos
A função abaixo devolve cópia de uma str substituindo os caracteres acentuados pelos seus equivalentes não acentuados. Note que ela também remove os caracteres gráficos não-ASCII (por exemplo, o travessão), e estes são descartados, e não substituídos.
Código
Python 2
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 '''
5 Devolve cópia de uma str substituindo os caracteres
6 acentuados pelos seus equivalentes não acentuados.
7
8 ATENÇÃO: carateres gráficos não ASCII e não alfa-numéricos,
9 tais como bullets, travessões, aspas assimétricas, etc.
10 são simplesmente removidos!
11
12 >>> remover_acentos('[ACENTUAÇÃO] ç: áàãâä! éèêë? íìĩîï, óòõôö; úùũûü.')
13 '[ACENTUACAO] c: aaaaa! eeee? iiiii, ooooo; uuuuu.'
14
15 '''
16
17 from unicodedata import normalize
18
19 def remover_acentos(txt, codif='utf-8'):
20 return normalize('NFKD', txt.decode(codif)).encode('ASCII', 'ignore')
21
22 if __name__ == '__main__':
23 from doctest import testmod
24 testmod()
Python 3
1 #!/usr/bin/env python3
2
3 '''
4 Devolve cópia de uma str substituindo os caracteres
5 acentuados pelos seus equivalentes não acentuados.
6
7 ATENÇÃO: carateres gráficos não ASCII e não alfa-numéricos,
8 tais como bullets, travessões, aspas assimétricas, etc.
9 são simplesmente removidos!
10
11 >>> remover_acentos('[ACENTUAÇÃO] ç: áàãâä! éèêë? íìîï, óòõôö; úùûü.')
12 '[ACENTUACAO] c: aaaaa! eeee? iiii, ooooo; uuuu.'
13
14 '''
15
16 from unicodedata import normalize
17
18 def remover_acentos(txt):
19 return normalize('NFKD', txt).encode('ASCII', 'ignore').decode('ASCII')
20
21 if __name__ == '__main__':
22 from doctest import testmod
23 testmod()
Exemplo de uso
Veja também a receita TiradorDeAcentos
Volta para CookBook.