1 Caractères à coder Les caractères à coder sont nombreux. Les caractères alphanumériques comprennent les caractères alphabétiques (de A à Z en alphabet latin), ainsi que les caractères numériques comprenant les chiffres 0 à 9 mais aussi les signes - ou +. Il y a aussi bien d autres caractères : ponctuation, touches clavier (espace, entrée, etc.), etc. 1.1 Code ASCII (American Standard Code for Information Interchange) Le code ASCII a été standardisé en 1963. Il utilise un octet pour encoder 128 caractères : 33 caractères de contrôle, 94 caractères imprimables (lettres, chiffres, etc.), l espace. Figure 1 : Table de conversion ASCII = début de la table de conversion UTF8 (aucune conversion n'est à connaitre) Le code ASCII ne permet d encoder que l alphabet latin, sans accent. Lycée Jules Ferry Cannes Page 1 sur 5 TSI1
1.2 Unicode Afin de coder d'autres caractères que ceux du code ASCII (les accents ), d'autres codages ont été élaborés. Pour obtenir des codages compatibles, on utilise des normes. La première norme d'unicode date de 1991, la dernière (version 9) de 2016. Unicode utilise un nombre variable de bits. Il permet d encoder plus d un million de caractères En pratique, l Unicode associe une valeur à un caractère (mapping). Actuellement, il y a plus de 245000 caractères assignés, 93 écritures différentes (japonais ). Plusieurs encodages sont possibles mais UTF8 (Universal Character Set Transformation Format - 8 bits) est la version utilisée par défaut dans Spyder. Les codes 128 à 160 n'ont pas d'affectation en UTF8 (UTF8 inclus les 128 codes ASCII). N base 10 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 N hexa A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 Caractère ª «± ² ³ N base 10 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 N hexa B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 Caractère µ ¹ º» ¼ ½ ¾ À Á Â Ã Ä Å Æ Ç È N base 10 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 N hexa C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC Caractère É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Figure 2 : Extrait de la table UTF8 qui prolonge les 128 premières valeurs (aucune conversion n'est à connaitre) 1.3 Codage avec python 1.3.1 Codage décimal des caractères Obtenir le code décimal (base 10) d'un caractère : fonction ord Exemple : >>> ord ( 'A' ) 65 Obtenir un caractère à partir de son code décimal : fonction chr Exemple : >>> chr(65) 'A' 1.3.2 Codage hexadécimal des caractères Un caractère peut être défini à partir de son numéro UTF-8 \xhh où hh est le numéro de caractère en hexadécimal. Exemple : >>> \x41 'A' 1.3.3 Raccourcis Certains caractères ont une écriture simplifiée : - saut de ligne s'écrit \n. Exemple : >>> print ( 'a\nb' ) a b - tabulation s'écrit \t Exemple : >>> print ( 'a\tb' ) a b Lycée Jules Ferry Cannes Page 2 sur 5 TSI1
2 Chaines de caractères en python 2.1 Format str Le format dans lequel sont stockés les caractères sont des chaines de caractères (string) de type str. Pour convertir un élément quelconque en chaine de caractère on utilise la fonction str. Exemple >>> a=str(12) >>> a '12' On peut comparer des chaines de caractères. Pour cela, python calcule la somme des codes de chacun des caractères. Exemple >>> 'b' < 'd' # traduit en codage UTF8 : 98 < 100 True >>> 'b' < 'D' # traduit en codage UTF8 : 98 < 68 False Les lettres sont ordonnées par ordre croissant de numéro UTF mais les minuscules et les majuscules sont décalées (il est préférable d'utiliser cette comparaison avec des caractères de même casse : soit des minuscules, soit des majuscules). 2.2 Affichage d'une chaine de caractères dans la console La fonction print affiche les chaines de caractères dans la console en codage Unicode (par défaut). Les différents textes à afficher sont séparés par des virgules. Si une variable n'est pas un texte, print le convertit automatiquement pour l'affichage en ajoutant un espace avant et après. Exemple : >>> p = 6 >>> print ( "La valeur de la pression est", 6, "bar.") La valeur de la pression est 6 bar. 2.3 Opérations élémentaires sur les chaines de caractères Opération Python Résultats A="abcde" B="fgh" Déterminer le nombre d éléments de A len(a) 5 Afficher le 3 e élément de A A[2] "c" Afficher le 2e élément en partant de la fin de A A[-2] "d" Extraire les éléments 0 à 3 Concaténer (ajouter) A et B A[1:4] "bcd" A + B "abcdefgh" Multiplication de A par 2 A*2 "abcdeabcde" Lycée Jules Ferry Cannes Page 3 sur 5 TSI1
Vérifier si 2 est dans A 2 in A False ATTENTION : une chaine de caractères n'est pas modifiable. Pour effectuer la modification d'un élément de A, il faut recopier les éléments à conserver et insérer le nouveau caractère. Exemple : remplacement de b par 2 dans la variable A du tableau précédent) : >>> A = A[0:1] + '2' + A[2:] 2.4 Quelques méthodes sur les chaines de caractères Plusieurs méthodes sont associées à la classe des chaines de caractères : Opération Méthode appliquée à la chaine stockée dans chaine1 Couper une chaine avec un caractère chaine1.split ( 'a' ) 'abcdef '.split ( 'a' ) Résultats chaine1="abcabcabc" ['', 'bc', 'bc', 'bc'] ['','bcdef '] Chercher la 1 ère position d'un caractère chaine1.index ('b') 1 Chercher la 1 ère position d'une chaine chaine1.find( 'bc' ) chaine1.find( 'bcde' ) 1-1 # sorte de code d'erreur Convertir en minuscules "ABCDe23".lower() "abcde23" Convertir en majuscules chaine1.upper() "ABCABCABC" Remplacer un caractère par un autre chaine1.replace( 'a', 'z' ) 'zbczbczbc' Ces méthodes ne sont pas à connaitre mais peuvent être présentes dans les sujets (après rappel ou extrait du tutoriel) pour simplifier la manipulation des chaines de caractères. 2.5 Ecriture dans un fichier texte Les chaines de caractères peuvent être enregistrés dans des fichiers en mode texte. Cela permet notamment de réaliser des enregistrements. Opération Instruction Exemple fichier (dans OS) : 'save.txt' fichier (dans python) : fichier Ouvrir un fichier en lecture monfichier = open('fichier.extension','r') fichier = open( 'save.txt', 'r') Lire le fichier chaine de caractères chaine = monfichier.read() mesure = fichier.read () Lycée Jules Ferry Cannes Page 4 sur 5 TSI1
Lire les lignes du fichier liste de chaines de caractères Ouvrir un fichier en écriture (écrase le fichier existant) liste = monfichier.readlines() mesures = fichier.readlines () monfichier = open('fichier.extension','w') fichier = open( 'save.txt', 'w') Ecrire dans un fichier monfichier.write( 'texte' ) fichier.write ( '12 13 14') Références : http://python.developpez.com/cours/apprendre-python3/?page=page_12 http://python.developpez.com/cours/docs.python.org/2.6/reference/lexical_analysis.php#stringliterals Lycée Jules Ferry Cannes Page 5 sur 5 TSI1