associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

RemovedorDeAcentos

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

   1 >>> remover_acentos('[ACENTUAÇÃO] ç: áàãâä! éèêë? íìĩîï, óòõôö; úùũûü.')
   2 '[ACENTUACAO] c: aaaaa! eeee? iiiii, ooooo; uuuuu.'

Veja também a receita TiradorDeAcentos

Volta para CookBook.


LucianoRamalho