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 \u ou 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.