chr()

Renvoie le caractère correspondant au code Unicode donné, par ex. chr(65) vaut "A". Fait l’inverse de ord().

Renvoie
Une chaîne d’un seul caractère.
Sur cette page

Exemple

#
Python
print(chr(65), chr(97), chr(233))
print(chr(0x1F40D))

labels = [chr(ord("A") + i) for i in range(4)]
print(labels)
Résultatrésultat enregistré, vous pouvez le vérifier
A a é
🐍
['A', 'B', 'C', 'D']

Définition et utilisation

#

La fonction chr(code) convertit un entier en une chaîne d’un seul caractère, dont le numéro dans le standard Unicode est égal à cet entier. chr(65) vaut "A", chr(97) vaut "a", et chr(233) vaut "é". La conversion inverse, du caractère vers le nombre, est faite par ord().

Unicode attribue un numéro à chaque caractère : aux lettres de tous les alphabets, aux chiffres, aux symboles et aux emoji. Les codes valides vont de 0 à 1 114 111 (en hexadécimal 0x10FFFF), et un nombre hors de cette plage lève une ValueError. Les codes s’écrivent souvent en hexadécimal, par ex. chr(0x1F40D) est l’emoji du serpent.

Les lettres consécutives de l’alphabet latin ont des codes consécutifs, donc chr() combiné avec ord() permet de décaler des lettres, comme dans un chiffre de César, ou de générer des étiquettes de réponses A, B, C, D. Les lettres accentuées se trouvent hors de cette suite, donc ce type de calcul ne les concerne pas.

Syntaxe

#
Syntaxe
chr(i)

Paramètres

#
  • i

    int de 0 à 1114111

    Le code du caractère dans le standard Unicode.

Plus d’exemples

#
Chiffre de César
Python
def caesar(text, shift):
    result = ""
    for char in text:
        if "a" <= char <= "z":
            result += chr((ord(char) - ord("a") + shift) % 26 + ord("a"))
        else:
            result += char
    return result

secret = caesar("python est super", 3)
print(secret)
print(caesar(secret, -3))
Résultatrésultat enregistré, vous pouvez le vérifier
sbwkrq hvw vxshu
python est super
Une plage de caractères et un code invalide
Python
print("".join(chr(code) for code in range(ord("a"), ord("f") + 1)))

try:
    chr(-1)
except ValueError as error:
    print(error)
Résultatrésultat enregistré, vous pouvez le vérifier
abcdef
chr() arg not in range(0x110000)

Bonnes pratiques

#
  • Pour vérifier si un caractère est une lettre ou un chiffre, utilisez les méthodes isalpha() et isdigit() plutôt que de comparer les codes. Elles fonctionnent aussi avec les lettres accentuées.
  • Un caractère dont vous connaissez le code peut aussi s’écrire directement dans une chaîne : "\u00e9" vaut "é".
  • Toutes les lettres minuscules de l’alphabet latin se trouvent dans la constante prête à l’emploi string.ascii_lowercase, sans avoir besoin de chr().

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.