HOWTO · Python

Imprimer des caractères Unicode en Python

Ce tutoriel montre comment imprimer des caractères Unicode en Python

Sur cette page

En Python, les chaînes peuvent contenir directement des caractères Unicode, et print() les écrit sur la sortie standard. Si vous connaissez le point de code hexadécimal ou le nom Unicode d’un caractère, vous pouvez l’insérer dans une chaîne avec une séquence d’échappement, le construire avec chr() ou le rechercher avec unicodedata.lookup().

Un point de code Unicode s’écrit U+ suivi d’un nombre hexadécimal. Par exemple, U+2612 représente ☒ et U+7687 représente 皇. Les trois méthodes ci-dessous produisent la même chaîne : ☒皇ÉÉ.

Méthode 1 : utiliser les séquences d’échappement Unicode

Dans un littéral de chaîne Python, \u est suivi exactement de quatre chiffres hexadécimaux, tandis que \U en est suivi de huit. Utilisez \u pour les points de code jusqu’à U+FFFF inclus, et \U au-delà. Les zéros initiaux supplémentaires dans la forme \U font partie de sa largeur de huit chiffres.

Exécutez cet exemple :

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

Chaque séquence d’échappement ajoute un caractère à la chaîne. Python interprète ces séquences lorsqu’il lit le littéral de chaîne : le texte affiché contient donc les caractères eux-mêmes, et non la notation des séquences d’échappement.

Méthode 2 : utiliser la fonction chr()

Utilisez chr() lorsque votre code dispose déjà de points de code sous forme d’entiers, par exemple des valeurs lues dans des données. Cette fonction renvoie une chaîne d’un caractère correspondant au point de code fourni ; vous pouvez concaténer ces chaînes pour obtenir un texte plus long.

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

Le préfixe 0x indique que chaque entier est écrit en hexadécimal. La chaîne obtenue peut être utilisée comme n’importe quelle autre chaîne Python.

Méthode 3 : utiliser les noms Unicode

Lorsque le nom d’un caractère est plus facile à retenir que son numéro, utilisez unicodedata.lookup() du module standard unicodedata de Python. Cette fonction renvoie le caractère associé à un nom Unicode exact. Assemblez les chaînes renvoyées, puis transmettez le résultat à 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)
☒皇ÉÉ

Utilisez l’orthographe indiquée dans la liste des noms de caractères Unicode. Un nom mal orthographié ou inconnu ne peut pas être recherché : vérifiez-le avant de l’utiliser.

Conseils supplémentaires

  • Le terminal, l’éditeur ou la police doit prendre en charge les caractères choisis pour les afficher correctement. Si le résultat apparaît sous forme de carrés ou de points d’interrogation, vérifiez l’environnement d’affichage : la chaîne peut tout de même contenir les caractères attendus.
  • Consultez une liste de caractères Unicode pour trouver un point de code ou le nom d’un caractère. Respectez le nombre de chiffres hexadécimaux : quatre après \u ou huit après \U.
  • Vous pouvez aussi saisir directement les caractères Unicode visibles dans un fichier source Python, à condition que le fichier et l’environnement d’édition les préservent correctement.

Conclusion

Utilisez les séquences d’échappement si vous connaissez les points de code hexadécimaux, chr() si votre code dispose de valeurs entières, et unicodedata.lookup() si vous connaissez les noms Unicode. Ces trois méthodes créent des chaînes Python ordinaires que print() peut envoyer en sortie.