1
resposta

[Dúvida] acentos

como fazer com que o acentos como "~", "^'sejam desconsiderados?

1 resposta

Olá boa noite! Existem algumas formas de remover acentos de strings:

import unicodedata

def remove_acentos(texto):
     return unicodedata.normalize('NFKD', texto).encode('ascii', 'ignore').decode('ascii')

O que o código acima faz é normalizar o texto de acordo com o padrão UNICODE, então esse texto é codificado de acordo com a tabela ASCII, que não possui caracteres especiais, como cedilha, acentos, emojis e entre outros. Por último o texto codificado em ASCII é decodificado para uma string python. Veja aqui a tabela ASCII: https://www.asciitable.com/, e aqui um site com alfabetos UNICODE: https://symbl.cc/pt/alphabets/. Existem vários tipos de encoding para textos, como UTF-8, ASCII, ISO e entre outros. Esses encodings funcionam como um dicionário com os caracteres disponíveis e um mapeamento deles para valores numéricos ou binários, na forma que eles são interpretados pelos computadores.

import unicodedata

def remove_acentos(texto):
     texto_normalizado = unicodedata.normalize('NFKD', texto)
    return ''.join([caracter for caracter in texto_normalizado if not unicodedata.combining(caracter)])

O código acima faz algo parecido, mas dessa vez ao invés de remover todos os caracteres que não estejam na tabela ASCII, nós estamos removendo os caracteres combinantes, que se unem a outros para formar mais combinações, que é o caso dos acentos que podem se combinar com as vogais do português. Essa abordagem mantém outros caracteres especiais que existem no UNICODE, como emojis e letras / ideogramas de praticamente todos os alfabetos existentes. Se quiser saber mais, você pode conferir aqui: https://www.otaviomiranda.com.br/2020/normalizacao-unicode-em-python/. Espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software