ord()

Renvoie le code Unicode d’un seul caractère, par ex. ord("A") vaut 65. Fait l’inverse de chr().

Renvoie
Un entier : le code du caractère dans le standard Unicode.
Sur cette page

Exemple

#
Python
print(ord("A"), ord("a"), ord("é"))
print(ord("c") - ord("a"))

for char in "Aé1":
    print(char, ord(char), f"U+{ord(char):04X}")
Résultatrésultat enregistré, vous pouvez le vérifier
65 97 233
2
A 65 U+0041
é 233 U+00E9
1 49 U+0031

Définition et utilisation

#

La fonction ord(char) prend une chaîne composée d’exactement un caractère et renvoie son numéro dans le standard Unicode. ord("A") vaut 65, ord("a") vaut 97, et ord("é") vaut 233. Une chaîne vide, ou plus longue qu’un caractère, lève une TypeError.

Python compare justement les chaînes selon ces codes, caractère par caractère. C’est pourquoi les majuscules sont « plus petites » que les minuscules ("Z" < "a"), et les lettres accentuées se retrouvent en fin de tri, après "z". En connaissant les codes, il est facile de comprendre d’où viennent ces résultats.

Vous obtenez le code en hexadécimal avec hex(ord(char)), ou avec le f-string f"U+{ord(char):04X}", dans le format utilisé dans les tables Unicode. Avec chr(), la fonction permet de calculer sur les caractères, par exemple pour trouver la position d’une lettre dans l’alphabet : ord(letter) - ord("a").

Syntaxe

#
Syntaxe
ord(c)

Paramètres

#
  • c

    str de longueur 1

    Un seul caractère.

Plus d’exemples

#
Pourquoi le tri « casse » les mots accentués
Python
words = ["Zoo", "banane", "café", "naïve", "pomme"]

print(sorted(words))
print(ord("Z"), ord("a"), ord("z"), ord("é"), ord("ï"))
print(sorted(words, key=str.lower))
Résultatrésultat enregistré, vous pouvez le vérifier
['Zoo', 'banane', 'café', 'naïve', 'pomme']
90 97 122 233 239
['banane', 'café', 'naïve', 'pomme', 'Zoo']

Les majuscules ont des codes plus petits que les minuscules, c’est pourquoi « Zoo » arrive en tête du premier tri. Les lettres accentuées, comme é et ï, ont des codes bien plus grands que les lettres sans accent, ce qui explique leur position dans les deux résultats.

Position d’une lettre et chaîne de plus d’un caractère
Python
def letter_position(letter):
    return ord(letter.lower()) - ord("a") + 1

print(letter_position("C"), letter_position("z"))

try:
    ord("ab")
except TypeError as error:
    print(error)
Résultatrésultat enregistré, vous pouvez le vérifier
3 26
ord() expected a character, but string of length 2 found

Bonnes pratiques

#
  • Pour trier sans distinguer majuscules et minuscules, utilisez key=str.lower. Un tri réellement conforme à l’ordre alphabétique français, avec les lettres accentuées à leur juste place, demande le module locale ou la bibliothèque PyICU.
  • Les codes de tous les caractères d’une chaîne s’obtiennent avec l’expression [ord(c) for c in texte].
  • Vous pouvez vérifier une plage de caractères sans ord(), en comparant directement des chaînes : la condition "a" <= caractère <= "z" donne le même résultat qu’une comparaison de codes.

Entrées associées

#

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