Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Encoding: Escrever corretamente em um CSV?

Boa tarde galera. Minha dúvida é simples (creio eu).

Quero escrever num arquivo CSV a palavra "LABORATÓRIO". Problema é que quando vou ver, está escrito "LABORATÓRIO" e eu tenho que manualmente, dentro do Excel, jogar um UTF-8 e ele fica certinho.

Segue meu cod:

a = u"LABORATÓRIO"

f = open("C:\Users\Ramon\Desktop\Testes\\teste.csv", "w")
f.write(a.encode("utf-8"))
f.close()

p.s.: tem que ser u"algumacoisaqualquer" pois é assim que está vindo os textos que pego. Estou tentando fazer uma raspagem de dados. Sem o encode, dá erro. Muito muito confuso.

2 respostas

Atualizando:

Consegui sanar meu problema trocando o encode para latin1.

Troquei depois para uma frase maior e utilizei da mesma coisa e deu um erro falando que algum carácter ele não tinha conseguido encodar direito.

Resolvi também botando um segundo argumento, o "ignore". Logo, ficou algo do tipo:

f.write(a.encode("latin1", "ignore"))

Para o MEU caso resolveu. Note que o "ignore" simplesmente some com os caracteres que dariam erro. No meu pequeno exemplo foi OK e resta agora ver se realmente é viável.

Ainda confuso de não ter pego com o utf-8, visto que era a opção que eu botava manualmente no Excel e resolvia. Não vou dar como solucionado ainda pra ver se alguém aponta algo melhor.

solução!

Oi Ramon,

Se funcionou com latin mas não com uft-8, é provável que seu arquivo esteja salvo com outro encoding. Uma forma de tentar detectar isso (não é 100% certeiro) é abrindo o arquivo com algum editor de texto, como o Visual Studio Code.

Se for isso, provavelmente dá pra alterar o encoding do arquivo nesse próprio editor de texto, ou chamar o comando open passando o encoding como parâmetro:

open("C:\Users\Ramon\Desktop\Testes\\teste.csv", "w", "utf-8")

Se nenhuma das opções der certo, tem que investigar melhor.