Re: [python-brasil] Acentuação/Formatação... ???

30 views
Skip to first unread message

Jonas Galvez

unread,
Apr 20, 2005, 7:30:20 AM4/20/05
to python...@yahoogrupos.com.br

Ademir Francisco da Silva wrote:
> Quando busco a palavra "não" utilizando o findall("n.o",
> qualquertexto), em vez de me retornar uma lista com " x(n.o)
> encontrados ", me retorna, "n\xe3o", quando dou print; já tentei
> print str(qualquertexto) e print repr(qualquertexto) e nada

E3 é o código hex do caractere ã em ISO-8859-1 (e também em sua versão
Microsoftiana, o Windows-1252).

Veja qual é o encoding usado do IDLE. O interpretador manda os bytes
para o shell, mas o shell pode não ser capaz de exibí-los corretamente,
em razão da codificação diferente.

No DOS, altera-se o codepage com o comando chcp. O codepage default do
DOS é o 437. Em geral, é melhor usar o 1252:

C:\> chcp 437
Página de códigos ativa: 437

C:\> \python24\python
>>> print '\xE7'

>>> ^Z

C:\> chcp 1252
Página de códigos ativa: 1252

C:\> \python24\python
>>> print '\xE7'
ç
>>> ^Z

Segue uma regex para capturar os caracteres acentuados usados no
português, em ISO-8859-1. Se quiser aumentar os ranges, é só olhar a
tabela do ISO-8859-1 ou outro charset que você queira usar. O kosis.net
tem todas as tabelas: http://www.kostis.net/charsets/

>>> import re
>>>
>>> ptbr = '\xc0-\xd6\xd9-\xdc\xe0-\xe4\xe7-\xef\xf2-\xf6\xf9-\xfc'
>>> re.findall('[\w\d%s]+' % ptbr, 'café, avião, caçador')
['caf\xe9', 'avi\xe3o', 'ca\xe7ador']

Mas a melhor solução está no módulo locale:

>>> import re, locale
>>>
>>> locale.setlocale(locale.LC_CTYPE , 'portuguese_brazil')
'Portuguese_Brazil.1252'
>>>
>>> ptbr = re.compile('[\w\d]+', re.LOCALE)
>>> ptbr.findall('café, avião, caçador')
['caf\xe9', 'avi\xe3o', 'ca\xe7ador']


--Jonas Galvez


===============================================================

Antes de enviar sua mensagem dê uma lida em:

http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar

===============================================================

Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

Reply all
Reply to author
Forward
0 new messages