Pergunta

Eu estou usando o Shell Python da seguinte maneira:

>>> s = 'Ã'
>>> s
'\xc3'

Como posso imprimir s variável para mostrar a um personagem ??? Este é o primeiro e mais fácil pergunta. Realmente, eu estou recebendo o conteúdo de uma página web que tem caracteres não ASCII, como o anterior e outros com til como A, E, I, n, etc. Além disso, eu estou tentando executar um regex com esses caracteres no expressão padrão contra o conteúdo da página web.

Como pode resolver este problema ??

Este é um exemplo de uma regex:

u'<td[^>]*>\s*Definición\s*</td><td class="value"[^>]*>\s*(?P<data>[\w ,-:\.\(\)]+)\s*</td>'

Se eu usar expresson aplicativo funciona bem.

EDIT [2009/05/26 16:38]: Desculpe, sobre a minha explicação. Vou tentar explicar melhor.

Eu tenho que pegar algum texto de uma página. Tenho a url da página e eu tenho a regex para obter esse texto. A primeira coisa que pensei foi o regex estava errado. Eu verifiquei com o Expresso e funciona bem, eu tenho o texto que eu queria. Assim, a segunda coisa que pensei foi para imprimir o conteúdo da página e foi quando eu vi que o conteúdo não era o que eu vejo no código fonte da página web. As diferenças são os caracteres não ascii como A, E, I, etc. Agora, eu não sei o que tenho que fazer e se o problema é na codificação do conteúdo da página ou no texto padrão da regex. Um dos regex Eu tenho definido é o anterior.

A questão wolud ser: não há qualquer problema usando regex qual o texto padrão tem caracteres não ASCII ???

Foi útil?

Solução

Suponha que você queira imprimi-lo como utf-8. Antes de python 3, o melhor é codificá-lo especificamente

print u'Ã'.encode('utf-8')

Se você obter o texto externamente então você tem que especificamente decode ( 'utf-8) como

f = open(my_file)
a = f.next().decode('utf-8') # you have a unicode line in a
print a.encode('utf-8') 

Outras dicas

Como posso imprimir s variável para mostrar o caráter de um ???
uso print:

>>> s = 'Ã'
>>> s
'\xc3'
>>> print s
Ã

Gostaria de usar ord() para descobrir se um caractere é ASCII / especial:

if ord(c) > 127:
    # special character

Isso provavelmente não vai funcionar com a codificação multibyte, como UTF-8. Neste caso, gostaria de converter para Unicode antes de testar.

Se você receber caracteres especiais a partir de uma página web, você deve saber a codificação. Então decodificá-lo, consulte Unicode HOWTO .

Edit: Eu definitivamente não sou certo o que esta pergunta é sobre ... Pode ser uma boa idéia para esclarecê-lo

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top