Utiliser ord() et chr() pour convertir les caractères et les entiers
Dans cette étape, nous allons apprendre à utiliser les fonctions intégrées de Python ord() et chr() pour convertir entre les caractères et leurs représentations entières correspondantes en Unicode.
Dans Python 3, les chaînes de caractères (strings) sont représentées en utilisant Unicode. La fonction ord() prend un seul caractère en entrée et retourne sa valeur entière décimale Unicode correspondante.
Créons un nouveau fichier Python pour expérimenter ces fonctions. Dans l'explorateur de fichiers du WebIDE, faites un clic droit sur le répertoire project et sélectionnez New File. Nommez le fichier char_conversion.py.
Ouvrez char_conversion.py dans l'éditeur et ajoutez le code suivant :
## Utiliser ord() pour obtenir la valeur décimale Unicode des caractères
char1 = 'a'
char2 = 'é'
char3 = ';'
print(f"La valeur décimale Unicode de '{char1}' est : {ord(char1)}")
print(f"La valeur décimale Unicode de '{char2}' est : {ord(char2)}")
print(f"La valeur décimale Unicode de '{char3}' est : {ord(char3)}")
Enregistrez le fichier en appuyant sur Ctrl + S (ou Cmd + S sur macOS).
Maintenant, ouvrez à nouveau le terminal intégré (s'il n'est pas déjà ouvert) et exécutez le script en utilisant la commande python :
python char_conversion.py
Vous devriez voir une sortie similaire à celle-ci :
La valeur décimale Unicode de 'a' est : 97
La valeur décimale Unicode de 'é' est : 233
La valeur décimale Unicode de ';' est : 59
La fonction chr() effectue l'opération inverse. Elle prend un entier décimal (ou un entier hexadécimal) représentant un point de code Unicode et retourne le caractère correspondant.
Ajoutons plus de code à char_conversion.py pour utiliser la fonction chr(). Ajoutez les lignes suivantes au code existant :
## Utiliser chr() pour obtenir le caractère à partir d'une valeur décimale Unicode
int1 = 8364
int2 = 8482
print(f"Le caractère pour la valeur décimale Unicode {int1} est : {chr(int1)}")
print(f"Le caractère pour la valeur décimale Unicode {int2} est : {chr(int2)}")
## Vous pouvez également utiliser des valeurs hexadécimales avec chr()
hex_int = 0x00A9 ## Hexadécimal pour le caractère '©'
print(f"Le caractère pour la valeur hexadécimale Unicode {hex(hex_int)} est : {chr(hex_int)}")
Enregistrez à nouveau le fichier.
Exécutez le script depuis le terminal :
python char_conversion.py
La sortie devrait maintenant inclure les résultats de la fonction chr() :
La valeur décimale Unicode de 'a' est : 97
La valeur décimale Unicode de 'é' est : 233
La valeur décimale Unicode de ';' est : 59
Le caractère pour la valeur décimale Unicode 8364 est : €
Le caractère pour la valeur décimale Unicode 8482 est : ™
Le caractère pour la valeur hexadécimale Unicode 0xa9 est : ©
Vous vous demandez peut-être comment trouver la représentation Unicode hexadécimale d'un caractère. Vous pouvez utiliser la fonction ord() pour obtenir la valeur décimale, puis la fonction intégrée hex() pour convertir la valeur décimale en sa représentation sous forme de chaîne hexadécimale.
Ajoutez le code suivant à char_conversion.py :
## Convertir un caractère en sa représentation Unicode hexadécimale
char_copyright = '©'
decimal_copyright = ord(char_copyright)
hexadecimal_copyright = hex(decimal_copyright)
print(f"La valeur Unicode hexadécimale de '{char_copyright}' est : {hexadecimal_copyright}")
Enregistrez le fichier et exécutez-le une dernière fois :
python char_conversion.py
La sortie finale inclura la valeur hexadécimale du caractère '©' :
La valeur décimale Unicode de 'a' est : 97
La valeur décimale Unicode de 'é' est : 233
La valeur décimale Unicode de ';' est : 59
Le caractère pour la valeur décimale Unicode 8364 est : €
Le caractère pour la valeur décimale Unicode 8482 est : ™
Le caractère pour la valeur hexadécimale Unicode 0xa9 est : ©
La valeur Unicode hexadécimale de '©' est : 0xa9
Cela démontre comment ord(), chr() et hex() peuvent être utilisés ensemble pour travailler avec les encodages de caractères en Python.