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

Problemas com caracteres especiais - Python

Coloquei uma lista de nomes, dentre os quais, alguns tinham acento, apesar de tê-los colocado como string (entre aspas), ele impimiu:

>>> nomes = ('Flávio', 'Romulo', 'Jose Leonardo')
>>> sorted(nomes)
['Fl\xa0vio', 'Jose Leonardo', 'Romulo']

Como corrigir, de modo que ele, não faça isso com o acento?

2 respostas
solução!

Oi, Catia! Tudo bem? A função sorted(), além de ordenar a tupla, a transforma em uma lista. Quando você deixa dessa forma, no console do Python, a lista é imprimida por conta do método __repr__() nativo das listas. Esse método, entretanto, mostra a representação de uma lista em uma string, por isso os valores internos ficam desse jeito. Para imprimir com os acentos corretamentes, não podemos imprimir como lista, mas como string separada. Olha só:

>>> nomes = ('Flávio', 'Romulo', 'Jose Leonardo')
>>> nomes_repr = sorted(nomes).__repr__()
>>> nomes_repr
"['Fl\xa0vio', 'Jose Leonardo', 'Romulo']"
>>> nome = nomes[0]
>>> nome
'Fl\xa0vio'.
>>> print(nome)
Flávio

Repare que a string ainda ficou estranha quando só usamos nome na linha de comando. Isso é porque, da mesma forma, o método chamado automaticamente foi o __repr__(), que mostra a representação em string do objeto. Usando o print(), o método chamado é o __str__(), que converte tudo bonitinho :).

Talvez tenha ficado um pouco confuso, mas espero que tenha entendido! Qualquer dúvida pode falar! Abraços e bons estudos.

Yan, me perdoe não ter respondido antes, fico muito agradecida pelos esclarecimentos, funcionou!! vlw