Ler arquivos com caracteres ç á Ú...

1,198 views
Skip to first unread message

Mário Idival

unread,
Jul 18, 2013, 10:56:48 AM7/18/13
to django...@googlegroups.com
Bom dia, 
Pessoal, não estou conseguindo exibir o conteúdo (linha) do arquivo que contem algum caractere especial ( ç á Ú ).

Já coloquei vários tipos de encodings e codings do Python no cabeçalho e não consigo mostrar os dados que contem esse tipo de caracteres.​
Ex> ITA\ - Deveria ser ITAÚ.

Atenciosamente,

--
Mário Idival

Twitter @marioigd
Facebookmario.idival
User Linux : #554446
Skype: marioidival

Paula Grangeiro

unread,
Jul 18, 2013, 11:47:43 AM7/18/13
to django...@googlegroups.com
vc tem q colocar um u antes do texto. Ex: print u'ITAÚ'


--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Paula Grangeiro

Mário Idival

unread,
Jul 18, 2013, 12:00:27 PM7/18/13
to django...@googlegroups.com
Já tentei isso também:
'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)

Luiz Carlos Santos

unread,
Jul 18, 2013, 12:08:37 PM7/18/13
to Django Brasil
Olhar aqui: http://imasters.com.br/artigo/10756/django/django-forms/

Espero que ajude.

Luiz Carlos 


Em 18 de julho de 2013 13:00, Mário Idival <mario...@gmail.com> escreveu:
Já tentei isso também:
'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)

--

Mário Idival

unread,
Jul 18, 2013, 12:23:57 PM7/18/13
to django...@googlegroups.com
Luiz, o problema que estou sofrendo é em leitura de arquivos com essas letras com acentos e ç.

Hélio Miranda

unread,
Jul 18, 2013, 12:51:27 PM7/18/13
to django...@googlegroups.com
Estás a querer ler um arquivo que contem palavras com acentos e ç é isso?

Vou te dar este exemplo ao ler um csv

file = request.FILES['file']    
dialect = csv_mod.Sniffer().sniff(codecs.EncodedFile(file,"utf-8").read(1024))
file.open() 
csv = csv_mod.DictReader( codecs.EncodedFile(file,"utf-8"), dialect=dialect )

Ve se ajuda

Elyézer Rezende

unread,
Jul 18, 2013, 12:59:44 PM7/18/13
to Lista Django Brasil
Mário,

Não consegui entender se o problema está na hora que vc vai abrir o
arquivo, por exemplo, open(u'ITAÚ'), ou se você está se deparando com
os acentos no meomento da leitura, por exemplo, print f.readline().

Ficaria melhor para te ajudar se você postar o código no dpaste ou
gist.github.com por exemplo.

Abraço

Mário Idival

unread,
Jul 18, 2013, 1:14:04 PM7/18/13
to django...@googlegroups.com
Elyezer,
O problema é na leitura das linhas, quando tem uma linha que tem a palavra do tipo ITAÚ, ele simplismente não parece..
Usei a lib codecs e consegui ler o arquivo

-- 
Hélio, é exatamente, quero ler arquivos que contenham palavras acentuadas... consegui fazer de uma forma diferente, mas vou usar esse seu exemplo para testar e ver se é melhor que a minha implementação.

Obrigado


--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Elyézer Rezende

unread,
Jul 18, 2013, 3:16:48 PM7/18/13
to Lista Django Brasil
No teste que fiz a leitura é feita tranquilamente sem ter que usar o
módulo codecs. Arquivo [1] e teste realizado [2].

O editor que escrevi o arquivo estava configurado para trabalhar com unicode.

De qualquer forma seria interessante você compartilhar como resolveu
o problema utilizando o modulo codecs. Tenho certeza que iria ajudar.

Abraço

[1] https://dpaste.de/vrK1E/
[2] https://dpaste.de/AOVyV/

2013/7/18 Mário Idival <mario...@gmail.com>:
Elyézer Rezende
http://elyezer.com

Alex Chiaranda

unread,
Jul 19, 2013, 7:07:31 AM7/19/13
to django...@googlegroups.com
você não disse se era python 2 ou 3

no python 2 eu faço dessa forma

#!/usr/bin/python
# -*- coding: utf-8 -*-

import codecs

arquivo = codecs.open('teste.txt', 'rb', encoding='utf-8')

for linha in arquivo :
	print linha

arquivo.close()

## fim


o teste.txt eu peguei esse aí do dpaste 


aqui está a saída:


[aechiara@debian]:~/dev/python$ cat teste.txt 
ITAÚ
ÁÉÍÓÚ
∂∂˚ƒ˜√ƒ©¬å…
[aechiara@debian]:~/dev/python$ python le_utf8.py 
ITAÚ

ÁÉÍÓÚ

∂∂˚ƒ˜√ƒ©¬å…

Mário Idival

unread,
Jul 19, 2013, 7:10:30 AM7/19/13
to django...@googlegroups.com
eu fiz assim

import codecs

arquivo  = codecs.open('arquivofromhell.txt',' r', 'iso8859-1')
# SIM, O UTF-8 NÃO RESOLVEU

.
.
.





Alex Chiaranda

unread,
Jul 20, 2013, 11:49:26 AM7/20/13
to django...@googlegroups.com
Mario,

note que eu usei "rb" para o modo de abertura, e o encode 'utf-8' vc tentou dessa forma ?

Até mais

Mário Idival

unread,
Jul 21, 2013, 7:15:06 AM7/21/13
to django...@googlegroups.com
não, Alex..

Alex Chiaranda

unread,
Jul 23, 2013, 9:17:25 AM7/23/13
to django...@googlegroups.com
Mario,

você está chamando pelo django ou direto do console ?
se for do django qual o LANGUAGE_CODE está configurado no seu settings ?

Mário Idival

unread,
Jul 23, 2013, 1:48:38 PM7/23/13
to django...@googlegroups.com
pt-BR 

Alex Chiaranda

unread,
Jul 24, 2013, 7:52:19 AM7/24/13
to django...@googlegroups.com
Mario,

o django tem algumas "ferramentas" para trabalhar com unicode, não sei se já deu uma olhada https://docs.djangoproject.com/en/dev/ref/unicode/#conversion-functions

tenta o smart_text => smart_text(s, encoding='utf-8', strings_only=False, errors='strict') 

outra coisa que me ocorreu vendo as mensagens anteriores, o texto já na está em unicode ? se for o caso é só fazer o encode 

if ( isinstance(s, unicode)) : print s.encode('utf-8') # ou iso, vc testa para ver qual atende

Mário Idival

unread,
Jul 24, 2013, 8:02:47 AM7/24/13
to django...@googlegroups.com
Ja tentei sim usar o smart_text, force_text ... e não deu certo também... eu consegui resolver usando o codecs ( como citei ). Mas preciso ver outra solução logo.

Mário Idival

Twitter @marioigd
Facebookmario.idival
User Linux : #554446
Skype: marioidival
Reply all
Reply to author
Forward
0 new messages