HOWTO · Python

Stampa caratteri Unicode in Python

Questo tutorial mostra come stampare caratteri unicode in Python

In questa pagina

Le stringhe Python possono contenere direttamente caratteri Unicode e print() li scrive nell’output standard. Se conosci il punto di codice esadecimale o il nome Unicode di un carattere, puoi inserirlo in una stringa con una sequenza di escape, costruirlo con chr() oppure cercarlo con unicodedata.lookup().

Un punto di codice Unicode si scrive con U+ seguito da un numero esadecimale. Per esempio, U+2612 rappresenta ☒ e U+7687 rappresenta 皇. I tre metodi seguenti creano la stessa stringa, ☒皇ÉÉ.

Metodo 1: usare le sequenze di escape Unicode

In un letterale stringa Python, \u è seguito da esattamente quattro cifre esadecimali, mentre \U è seguito da otto. Usa \u per i punti di codice fino a U+FFFF e \U per quelli superiori a questo intervallo. Gli zeri iniziali aggiuntivi nella forma \U fanno parte della sua larghezza di otto cifre.

Esegui questo esempio:

unicode_text = "\u2612\u7687\u00C9\u00C9"
print(unicode_text)
☒皇ÉÉ

Ogni sequenza di escape aggiunge un carattere alla stringa. Python interpreta queste sequenze quando legge il letterale stringa, quindi il testo stampato contiene i caratteri, non la notazione di escape.

Metodo 2: usare la funzione chr()

Usa chr() quando il codice dispone già di punti di codice interi, per esempio valori letti da dati. Restituisce una stringa di un carattere per il punto di codice fornito; concatena queste stringhe per ottenere un risultato più lungo.

unicode_text = chr(0x2612) + chr(0x7687) + chr(0x00C9) + chr(0x00C9)
print(unicode_text)
☒皇ÉÉ

Il prefisso 0x indica che ogni numero intero è espresso in esadecimale. La stringa risultante si può trattare come qualsiasi altra stringa Python.

Metodo 3: usare i nomi Unicode

Se è più facile ricordare il nome di un carattere che il suo numero, usa unicodedata.lookup() del modulo standard Python unicodedata. Restituisce il carattere associato a un nome Unicode esatto. Unisci le stringhe restituite e passa il risultato a 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)
☒皇ÉÉ

Usa la grafia riportata nell’elenco dei nomi dei caratteri Unicode. Un nome scritto in modo errato o sconosciuto non può essere cercato: controllalo prima di usarlo.

Suggerimenti aggiuntivi

  • Per visualizzare correttamente i caratteri scelti, il terminale, l’editor o il font deve supportarli. Se l’output appare come riquadri o punti interrogativi, controlla l’ambiente di visualizzazione: la stringa potrebbe comunque contenere i caratteri previsti.
  • Consulta un elenco di caratteri Unicode quando ti serve un punto di codice o il nome di un carattere. Fai corrispondere il numero di cifre esadecimali alla sequenza di escape: quattro dopo \u oppure otto dopo \U.
  • Puoi anche digitare direttamente i caratteri Unicode visibili in un file sorgente Python, purché il file e l’ambiente di modifica li conservino correttamente.

Conclusione

Usa le sequenze di escape quando conosci i punti di codice esadecimali, chr() quando il codice dispone di valori interi e unicodedata.lookup() quando conosci i nomi Unicode. Tutti e tre i metodi creano normali stringhe Python che print() può inviare all’output.