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.
Exemple
#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}")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
#ord(c)Paramètres
#c
str de longueur 1
Un seul caractère.
Plus d’exemples
#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))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.
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)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 modulelocaleou la bibliothèquePyICU. - 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
#- chr()Renvoie le caractère correspondant au code Unicode donné, par ex. chr(65) vaut "A". Fait l’inverse de ord().
- sorted()Renvoie une nouvelle liste triée à partir des éléments de n’importe quelle collection.
- str()Convertit une valeur en chaîne.
- str.lower()Renvoie une copie de la chaîne écrite en minuscules.
- int()Convertit une valeur en entier.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.