Remover acentuação python

533 views
Skip to first unread message

Celso Souza

unread,
Aug 25, 2021, 9:03:41 AM8/25/21
to Python Brasil
Bom dia!!!

Tenho um arquivo em excel e na coluna D preciso remover todo tipo de acentuação,
mas são mais de mil linhas e é impossível fazer isto manualmente. Então quero fazer 
um sistema para remover qualquer tipo de acento apenas da coluna D.

Exemplo:
        D
descrição
atenção
inventário 

Tem que ficar desta forma

           D

descricao
atencao
inventario

Alguém pode me ajudar.
Aguardo um retorno.

Grato.

Avraham Serour

unread,
Aug 25, 2021, 9:10:41 AM8/25/21
to python...@googlegroups.com
Para remover acento de um character na verdade não se remove, se troca por outro sem.
A letra com acento é um character só, então você tem que mapear isso sozinho e fazer um replace para cada character para cada linha

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/2c740e51-c369-46ed-84e7-b17b7dcac331n%40googlegroups.com.

Maxwell Morais

unread,
Aug 25, 2021, 9:22:24 AM8/25/21
to python-brasil
```
import unicodedata  # lib da biblioteca padrão do python

def remove_acentos(s : str) -> str:
    """Função para remover todos os acentos de uma texto `s`"""
    return "".join([
        c for c in unicodedata.normalize("NFKD", s)
         if not unicodedata.combining(c)
    ])

>>> print(remove_acentos("São Paulo"))
Sao Paulo

```




--

Best Regards.

Maxwell Morais
Python Developer powered by Frappé frameworks <3

Rodrigo Amaral

unread,
Aug 25, 2021, 9:25:31 AM8/25/21
to Python Brasil
Bom dia,

Acho que a função normalize [1] do módulo unicodedata pode ajudar


--
Rodrigo Amaral
rodrig...@gmail.com


Eric Chiesse

unread,
Aug 25, 2021, 4:18:44 PM8/25/21
to python...@googlegroups.com
Não é mais fácil e rápido fazer uma busca e substituição globais no próprio excel?

Copia essa coluna em outra planilha, faz as substituições e depois devolve para o lugar original.

Se vc precisar repetir essa operação aí começa a fazer sentido um script, mas eu inicialmente faria em VBA mesmo e criaria um atalho no próprio Excel

A vantagem do VBA é que vc pode mandar gravar uma macro com os passos principais e depois refinar a macro pra ficar exatamente como vc quer.
---
Eric


Joao S. O. Bueno

unread,
Aug 25, 2021, 4:38:50 PM8/25/21
to python...@googlegroups.com
On Wed, 25 Aug 2021 at 17:18, Eric Chiesse <echi...@gmail.com> wrote:
Não é mais fácil e rápido fazer uma busca e substituição globais no próprio excel?

Não, não é.

Uma das grandees vantagens do Python em relação a outras linguagens é que um programa 
em Python pode ser de uma única linha e ele já pode ser útil - e é bem fácil vocẽ fazer esse tipo 
de coisa em Python.

O código para tirar acentos no e-mail do Maxwell acima é o correto e vai funcionar.
Vocẽ precisa de mais uma linha pra ler o arquivo e outra pra escrever de volta o arquivo -
se quiser trabalhar com CSV, ou umas 2 ou 3 linhas se for ler e escrever direto o arquivo XLSX 
um "search e replace" levando em conta todos os tipos possíveis de acentos vai levar um tempao em
_uma planilha_. e a hora que ela for atualizada, você precisa fazer de novo - e fazer _tudo_ :-)

Além disso, a necessidade de tirar acentos, em geral já vai ser por conta de encaminhar os dados 
prauma próxima etapa de análise dos dados - e a linguagem mais usada pra essa etapa de análise já
é o próprio Python.

 



 

Sinval Júnior

unread,
Aug 25, 2021, 4:55:31 PM8/25/21
to python...@googlegroups.com
import unicodedata
stringVal = u'Här är ett exempel på en svensk mening att ge dig.'
print(unicodedata.normalize('NFKD', stringVal).encode('ascii', 'ignore'))



Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+


Eric Chiesse

unread,
Aug 25, 2021, 5:15:29 PM8/25/21
to python...@googlegroups.com
Assumindo que a pessoa já saiba Python, já conheça a ferramenta (lib) e já tenha o ambiente de execução configurado eu concordo contigo. 
Do contrário, normalmente é mais eficiente usar o que está disponível na própria ferramenta que a pessoa usa.
---
Eric


Eric Chiesse

unread,
Aug 25, 2021, 5:24:10 PM8/25/21
to python...@googlegroups.com
Se bem que, pensando melhor, se comparar uma pessoa que saiba (python + lib) contra quem sabe excel ainda acho que quem sabe excel resolve mais rápido esse problema específico.

Agora se o propósito for, como eu disse antes, repetir o processo no tempo ou em várias planilhas aí realmente a abordagem manual perde.
---
Eric

Junior Phanter

unread,
Aug 25, 2021, 5:40:18 PM8/25/21
to python...@googlegroups.com
Uso a muito tempo a solução que o Sival Júnior postou... mais de 4000 nomes foram processados... a única diferença do meu código que está sendo utilizado em relação ao dele é que depois de fazer o encode eu faço o decode.
OBS.: Em produção usando o Python 3.7, Tornado e pyDAL

image.png



Avraham Serour

unread,
Aug 26, 2021, 8:38:59 AM8/26/21
to python...@googlegroups.com
Queria dar os meus dois centavos de opinião em relação aos que acham que fazer isso em VBA seria mais rápido.

De fato também acho que fazer uma função dessa simples seria bem mais rápido de terminar no total, só o tempo de instalar e preparar todo o ambiente do python, aprender a usar a biblioteca de processar xlsx ou csv, ou talvez uma dessas soluções de rodar python dentro do Excel. Só isso leva mais tempo do que escrever a função em si.
E de fato se alguém tem pressa, fazer isso em VBA, por mais feio que seja vai ser mais rápido.
Porém acho que vale a pena levar em consideração os efeitos adversos do processo, o indivíduo agora aprendeu a como processar as linhas que ele tem no Excel com python. Com isso em mãos agora ele tem uma ferramenta poderosa em mãos que vai ser uma alavanca para a vida profissional e fica muito mais fácil de fazer qualquer outro processamento complexo como validação dos dados, adicionar outros campos, calcular alguma coisa mais complicada etc

E para aprender isso tudo nada melhor do que um projeto simples como esse de tirar os acentos da string
Pode chamar isso de CV driven development, isso é um paradigma de programação conhecido por pessoas do ramo mas que talvez não seja tão valorizado ou conhecido fora.
Eu nunca tinha percebido isso ou parado para pensar até que uns anos atrás um parente meu que trabalha em um departamento de avaliações de viabilidade financeira de projetos me contou que descobriu que no Excel tinha possibilidade de programar as contas, o que ele fazia na mão em três dias e ainda tinha que revisar, o Excel agora fazia por você em 5 minutos. Eu fiquei surpreso de como alguém ainda faz essas coisas na mão, por mais que o cara só financeiro não vai agora aprender a programar, agora ele sabe que isso é possível e pode pedir para um programador da empresa escrever alguma função para ele.

Lauriano Elmiro Duarte

unread,
Aug 26, 2021, 10:22:39 PM8/26/21
to python...@googlegroups.com
trabalha com automaçâo de tarefas é sempre interessante, as vezes, me pergunto por quê alguém baixaria o excel no seu computador em vez de usar algo como google sheets, que faz tudo o que o excel faz e ainda tem uma api por trás ?

Reply all
Reply to author
Forward
0 new messages