1725 : orgue de Barbarie (figure )
1801 : métier à tisser Jacquard (figure )
1908 : Charles Babbage, ordinateurs (figure )
Ordinateur “personnel” : 1960
1964 : IBM 2260 (figure )
Exemple : lettre “A” => numéro 65
Exemple :
127 caractères de la table ASCII : figure
Fonction chr : caractère correspondant à un code
# Basique
for c in range(128):
print(chr(c))
# Plus joli
for c in range(32,128):
print(f"{c:03d}={chr(c)}", end=" ")
if c % 8 == 7:
print()256 caractères de la table ISO-8859-1 : figure
Exemples :
Versions successives pour ajouter des caractères : https://unicode.org/versions/ ou wikipedia
UTF-8 = Unicode Transformation Format 8 bits
0bbb bbbb
Bits de poids fort du 1er octet : indiquent le nombre d’octets utilisés pour encoder le caractère. Les bits restants indiquent la valeur unicode.
110b bbbb 10bb bbbb
0x0080
et 0x07FF1110 bbbb 10bb bbbb 10bb bbbb
0x0800
et 0xFFFF1111 0bbb 10bb bbbb 10bb bbbb 10bb bbbb
ord('€') = 8364hex(8364) = 0x20ACbin(8364) = 0b10 0000 1010 1100 : 14
bits1110 bbbb 10bb bbbb 10bb bbbb0010 00 0010 10 11001110 0010 1000 0010 1010 1100E 2 8 2 A C = E282AChttps://fonts.google.com/specimen/Source+Code+Pro/glyphs
ord(':-)') = 128578 (smiley)hex(128578) = 0x1F642Écrire le code UTF-8 correspondant.
UTF-8 est le codage le plus utilisé dans le monde.
Python 3 : UTF-8 par défaut
On ne peut pas se déplacer dans une chaîne de caractères en UTF-8 en comptant les octets, il faut partir du début à chaque fois => algorithmes spécifiques.
ord et chr renvoient les codes
unicodelen renvoie le nombre de caractères et non le nombre
d’octetsb'...' (pas de caractères, que des octets)
b'\\xe2\\x82\\xac'.decode('utf-8') =>
'€''€'.encode('utf-8') =>
b'\\xe2\\x82\\xac''€'.encode('latin1') => ERREUR'É'.encode('latin1') = b'\\xc9''É'.encode('utf-8') = b'\\xc3\\x89'les chaînes de caractères sont séquentielles : on peut accéder à un caractère par son indice
s = "Hello"
print(s[0]) # affiche Hles chaînes de caractères sont immuables : on ne peut pas modifier un caractère directement dans une chaîne
s = "Hello"
s[0] = 'h' # ERREURles chaînes de caractères sont itérables : on
peut les parcourir avec une boucle for
s = "Hello"
for c in s:
print(c)str.upper() : convertit en majusculesstr.lower() : convertit en minuscules'a' in str : teste si a est dans
strstr.capitalize() : met la première lettre en
majusculestr.title() : met la première lettre de chaque mot en
majusculestr.strip() : supprime les espaces au début et à la
finstr.lstrip() : supprime les espaces au débutstr.rstrip() : supprime les espaces à la finstr.replace('a', 'b') : remplace toutes les occurrences
de a par bstr.split() : découpe la chaîne en mots (séparateur :
espace)str.split('a') : découpe la chaîne en mots (séparateur
: a)str.join(liste) : concatène les éléments de la liste en
les séparant par strstr.startswith('a') : teste si la chaîne commence par
astr.endswith('a') : teste si la chaîne se termine par
astr.find('a') : renvoie l’indice de la première
occurrence de a dans la chaîne, -1 si pas trouvéstr.rfind('a') : renvoie l’indice de la dernière
occurrence de a dans la chaîne, -1 si pas trouvéstr.count('a') : renvoie le nombre d’occurrences de
a dans la chaînestr.isalpha() : teste si la chaîne ne contient que des
lettresstr.isdigit() : teste si la chaîne ne contient que des
chiffresstr.isalnum() : teste si la chaîne ne contient que des
lettres et des chiffresstr.islower() : teste si la chaîne ne contient que des
lettres minusculesstr.isupper() : teste si la chaîne ne contient que des
lettres majusculesstr.isspace() : teste si la chaîne ne contient que des
espaces