HOWTO · Python
Imprimir caracteres Unicode em Python
Este tutorial demonstra como imprimir caracteres Unicode em Python
Nesta página
Strings do Python podem conter caracteres Unicode diretamente, e print() grava esses caracteres na saída padrão. Se você souber o ponto de código hexadecimal ou o nome Unicode de um caractere, poderá inseri-lo em uma string com uma sequência de escape, criá-lo com chr() ou consultá-lo com unicodedata.lookup().
Um ponto de código Unicode é escrito como U+ seguido de um número hexadecimal. Por exemplo, U+2612 representa ☒ e U+7687 representa 皇. Os três métodos a seguir criam a mesma string: ☒皇ÉÉ.
Método 1: usando sequências de escape Unicode
Em um literal de string do Python, \u é seguido por exatamente quatro dígitos hexadecimais, enquanto \U é seguido por oito. Use \u para pontos de código até U+FFFF e \U para pontos de código acima desse limite. Os zeros à esquerda na forma \U fazem parte de sua largura de oito dígitos.
Execute este exemplo:
unicode_text = "\u2612\u7687\u00C9\u00C9"
print(unicode_text)
☒皇ÉÉ
Cada sequência de escape acrescenta um caractere à string. O Python interpreta essas sequências ao ler o literal de string; por isso, o texto impresso contém os caracteres, e não a notação de escape. O exemplo exibe ☒皇ÉÉ na saída.
Método 2: usando a função chr()
Use chr() quando seu código já tiver pontos de código inteiros, como valores lidos de dados. A função retorna uma string de um caractere para o ponto de código informado; concatene essas strings para formar um resultado maior.
unicode_text = chr(0x2612) + chr(0x7687) + chr(0x00C9) + chr(0x00C9)
print(unicode_text)
☒皇ÉÉ
O prefixo 0x indica que cada inteiro está em hexadecimal. A string resultante pode ser usada como qualquer outra string do Python.
Método 3: usando nomes Unicode
Quando for mais fácil lembrar o nome de um caractere do que seu número, use unicodedata.lookup() do módulo padrão unicodedata do Python. A função retorna o caractere associado a um nome Unicode exato. Junte as strings retornadas e passe o resultado para print():
import unicodedata
unicode_text = (
unicodedata.lookup("BALLOT BOX WITH X")
+ unicodedata.lookup("CJK UNIFIED IDEOGRAPH-7687")
+ unicodedata.lookup("LATIN CAPITAL LETTER E WITH ACUTE")
+ unicodedata.lookup("LATIN CAPITAL LETTER E WITH ACUTE")
)
print(unicode_text)
☒皇ÉÉ
Use a grafia registrada nos nomes dos caracteres Unicode. Um nome escrito incorretamente ou desconhecido não pode ser consultado; por isso, confira o nome antes de usá-lo.
Dicas adicionais
- O terminal, o editor ou a fonte precisa oferecer suporte aos caracteres escolhidos para exibi-los como esperado. Se a saída aparecer como quadrados ou pontos de interrogação, confira o ambiente de exibição; a string ainda pode conter os caracteres pretendidos.
- Consulte uma lista de caracteres Unicode quando precisar encontrar um ponto de código ou o nome de um caractere. Use a quantidade correta de dígitos hexadecimais: quatro após
\uou oito após\U. - Você também pode digitar caracteres Unicode visíveis diretamente em um arquivo-fonte do Python, desde que o arquivo e o ambiente de edição os preservem corretamente.
Conclusão
Use sequências de escape quando souber os pontos de código hexadecimais, chr() quando seu código tiver valores inteiros e unicodedata.lookup() quando tiver nomes Unicode. As três abordagens criam strings comuns do Python que print() pode enviar para a saída.