Vous êtes sur la page 1sur 34

INF1005D – Chaînes de caractères Chapitre 4

INF1005D: Programmation
Procédurale en Python
Chapitre 4 – Chaînes de caractères

Génie informatique et génie logiciel 1 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Plan
• Qu’est-ce qu’un caractère?
• Chaînes de caractères
• Opérations élémentaires
• Méthodes str
• Composition et formatage

Génie informatique et génie logiciel 2 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Plan
ØQu’est-ce qu’un caractère?
• Chaînes de caractères
• Opérations élémentaires
• Méthodes str
• Composition et formatage

Génie informatique et génie logiciel 3 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Qu’est-ce qu’un caractère?


• On appelle caractère tout symbole qui peut être écrit, comme:
§ Les lettres de l’alphabet latin: abcd…xyz ABCD…XYZ,
§ Les chiffres décimaux: 0123456789,
§ Les symboles de ponctuation: . , : ; ! ? " ‘
• À inclure aussi: le retour à la ligne et la tabulation
§ Les symboles de parenthèses, accolades et crochets: ( ) { } [ ],
§ Les autres symboles (@ # $ % ^ & etc.),
§ Et bien d’autres caractères comme les lettres accentuées (à é û ï ñ),
les lettres de l’alphabet grec (α, β, ϕ), les hiragana japonais (ら き め
ど ), les idéogrammes japonais/chinois ( 願 疲 時 故 風 ), les lettres
arabes ( ‫) ش و ث غ ذ‬, etc.

Génie informatique et génie logiciel 4 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Qu’est-ce qu’un caractère? Les caractères invisibles


• Certains caractères très spéciaux ne sont pas visibles sur un
écran d’ordinateur. Ils sont utilisés par l’ordinateur pour des fins
de gestion:
§ Backspace (Retour en arrière),
§ Bell (Signal auditif),
§ End of transmission (Fin de transmission),
§ etc.

Génie informatique et génie logiciel 5 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Qu’est-ce qu’un caractère? Représentation ASCII


• Les caractères basiques
peuvent être représentés
selon le format nommé
ASCII (American
Standard Code for
Information Interchange)
• Chacun des 128
caractères est représenté
par un entier allant de 0 à
127 selon la table ci-
contre.

Génie informatique et génie logiciel 6 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Qu’est-ce qu’un caractère? Représentation Unicode (UTF-8)


• L’ensemble des caractères étant très vaste, il n’est pas
possible de le représenter sur une table de 128 caractères
seulement.
• Unicode (UTF-8) permet l’utilisation des caractères qui ne sont
pas disponibles en ASCII tels que:
§ les lettres accentuées (à é û ï ñ),
§ les lettres de l’alphabet grec (α, β, ϕ),
§ les hiragana japonais (ら き め ど),
§ les idéogrammes japonais/chinois (願 疲 時 故 風),
§ les lettres arabes ( ‫) ش و ث غ ذ‬,
§ etc.

Génie informatique et génie logiciel 7 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Plan
• Qu’est-ce qu’un caractère?
ØChaînes de caractères
• Opérations élémentaires
• Méthodes str
• Composition et formatage

Génie informatique et génie logiciel 8 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Propriétés


• Une chaîne de caractères (string en anglais) est une séquence
de caractères, c’est-à-dire des caractères qui se suivent dans
un ordre particulier. Une chaîne de caractères vide ne contient
aucun caractères.

• Les chaînes de caractères constituent un sous-ensemble des


données composites, c’est-à-dire une entité qui rassemble
plusieurs entités plus simples. Dans le cas d’une chaîne de
caractères, les entités plus simples sont les caractères.

Génie informatique et génie logiciel 9 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Déclaration


• Les valeurs littérales de chaînes de caractères s’écrivent de
plusieurs manières en Python:
§ Entre deux apostrophes 'bonjour';
§ Entre deux guillemets "bonjour";
§ Entre deux triples apostrophes '''bonjour''';
§ Entre deux triples guillemets """bonjour""".

Génie informatique et génie logiciel 10 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Déclaration


• Chaque déclaration possède son utilité par rapport au cas à traiter:
§ On utilise les guillemets lorsque la chaîne contient des apostrophes:
'je m'appelle Marc' "je m'appelle Marc"

§On utilise les apostrophes lorsque la chaîne contient des guillemets:


"Il dit: "Bonjour"" 'Il dit: "Bonjour"'

§ On utilise les guillemets ou apostrophes triples lorsque la chaîne


contient des retours à la ligne:
"""Bonjour
je m'appelle Marc"""

Génie informatique et génie logiciel 11 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Échappement


• Parfois une chaîne de caractères contient des apostrophes et des
guillemets. Il faut échapper ces caractères au moyen de l’anti-slash ( \ )
'Il dit: "Bonjour l'ami"' 'Il dit: "Bonjour l\'ami"'
• Certains caractères ne peuvent être écrits que sous leur forme échappée:
§ La nouvelle ligne: \n
§ La tabulation: \t
§ Le retour charriot: \r
§ L’anti-slash: \\
§ etc.

Génie informatique et génie logiciel 12 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Indexation


• Un string en Python est un objet de la catégorie des
séquences, soit une collection ordonnée d’éléments. Cela
signifie que l’ordre des caractères est primordial.
• Par conséquent, chaque caractère de la chaîne peut être
désigné par sa place dans la séquence à l’aide d’un index.
ch = "Bonjour" ch = "Bonjour" # 7 chr: 0 -> 6
print(ch[0], ch[1], ch[5]) print(ch[7])

B o u IndexError: string index out


of range
Attention: Toute collection ordonnée
commence à l’index 0 Un dépassement génèrera une erreur
d’exécution!
Génie informatique et génie logiciel 13 H. 2023
INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Tranches (slicing)


• Accéder à plusieurs caractères d’une même chaîne peut se faire au
moyen d’un découpage en tranche (slicing) avec la syntaxe
str[début:fin]

ch = "Hello World!" lo W
print(ch[3:7]) (1) Hello
print(ch[:5]) (2) o World!
print(ch[4:]) (3)

1. L’index de fin est toujours exclu de la H e l l o W o r l d !


tranche!
2. Si on ne précise pas le début, la tranche 0 1 2 3 4 5 6 7 8 9 10 11

commencera au début de la chaîne


3. Si on ne précise pas la fin, la tranche ira
jusqu’au bout de la chaîne

Génie informatique et génie logiciel 14 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Chaînes de caractères Immutabilité


• Un string est immutable : c’est-à-dire que son contenu ne peut
être modifié une fois que la chaîne est créée.
• On ne peut donc pas affecter une nouvelle valeur à un certain
caractère de la chaîne.
ch = "Hello World!"
ch[6] = "w"

ch[6] = "w"
TypeError: 'str' object does not support item assignment

Génie informatique et génie logiciel 15 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Plan
• Qu’est-ce qu’un caractère?
• Chaînes de caractères
ØOpérations élémentaires
• Méthodes str
• Composition et formatage

Génie informatique et génie logiciel 16 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires Comparaison


• Vous pouvez comparer les chaînes de caractères en utilisant
les opérateurs usuels de comparaison: ==, !=, >, >=, < et <=
• Python compare les codes ASCII de la première paire
d’éléments. S’il sont différents, il retourne le résultat de la
comparaison; sinon, il compare la paire suivante jusqu’à
terminer la chaîne.
• La fonction ord permet d’obtenir le code ASCII correspondant
à un seul caractère donné (ex.: ord('Q') -> 81 )
• La fonction chr permet d’obtenir le caractère correspondant au
code ASCII donné (ex.: chr(81) -> Q )

Génie informatique et génie logiciel 17 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires Comparaison (Exemple)


• Soient les deux chaînes de caractères suivantes:
0 1 2 3 4 5 6 7 8 9 10 11

H e l l o W o r l d !
72 101 108 108 111 32 87 111 114 108 100 33

= = = = = = > Conclusion: "Hello World!" > "Hello Everyone"

72 101 108 108 111 32 69 118 101 114 121 111 110 101

H e l l o E v e r y o n e
0 1 2 3 4 5 6 7 8 9 10 11 12 13

Génie informatique et génie logiciel 18 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires
Concaténation Répétition d’un string
L’opérateur + sert à concaténer L’opérateur * sert à concaténer
deux chaînes de caractères plusieurs copies de la même
chaîne
ch1 = "Hello" ch = "Bonjour"
ch2 = "World" print(ch*4)
print(ch1+ch2)

HelloWorld BonjourBonjourBonjourBonjour

Génie informatique et génie logiciel 19 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires L’inclusion


• Vous pouvez utiliser les opérateurs in et not in pour tester si un
string est inclus dans un autre string
ch = "Bonjour"
print("on" in ch) # True
print("on" not in ch) # False
print("a" in ch) # False
print("a" not in ch) # True

Génie informatique et génie logiciel 20 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires La fonction input()


• La plupart des scripts élaborés nécessitent à un moment ou un autre une
intervention de l’utilisateur (ex.: entrée d’un paramètre)
• La méthode la plus simple est d’employer fonction intégrée input()
nom = input("Entrez votre nom: ")
print("Bonjour " + nom)

Entrez votre nom: John


Bonjour John

Vous pouvez donner à la fonction input un message qui sera affiché avant que l’utilisateur
n’entre ses valeurs.
Ceci est utile pour indiquer à l’utilisateur qu’est-ce qui est attendu de lui.

Génie informatique et génie logiciel 21 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires La fonction input()


• Attention: La fonction input renvoie toujours une chaîne de
caractères. Si cela est nécessaire, il faut convertir le résultat
en entier avec int() ou en flottant avec float()
nom = input("Entrez votre nom: ") Entrez votre nom: John
print(type(nom)) <class 'str'>
Entrez votre age: 24
age = input("Entrez votre age: ")
<class 'str'>
print(type(age))
Entrez votre age: 24
age2 = int(input("Entrez votre age: ")) <class 'int'>

print(type(age2))

Conversion en entier

Génie informatique et génie logiciel 22 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Opérations élémentaires Parcours d’un string


• Une chaîne de caractères étant une séquence, elle peut être parcourue à
l’aide d’une structure particulière, qui sera vue en détail au chapitre
suivant : la boucle.
• Particulièrement, la boucle for parcourt la chaîne de caractère élément
par élément. Par exemple:
chaine = "Bonjour" BB
for char in chaine: oo
print(char*2) nn
jj
oo
uu
rr

Génie informatique et génie logiciel 23 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Plan
• Qu’est-ce qu’un caractère?
• Chaînes de caractères
• Opérations élémentaires
ØMéthodes str
• Composition et formatage

Génie informatique et génie logiciel 24 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Méthodes str
La classe str fournit de nombreuses méthodes utiles. Ces méthodes
permettent de faire des tests, des recherches ou des modifications
dans les chaînes de caractères

Génie informatique et génie logiciel 25 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Méthodes str Tests


Les méthodes suivantes permettent d’effectuer des tests sur les caractères
d’une chaîne.
§ isalnum() : Renvoie True si les caractères dans cette chaîne sont alphanumériques
et il y a au moins un caractère.
§ isalpha() : Renvoie True si les caractères dans cette chaîne sont alphabétiques et
il y a au moins un caractère.
§ isdigit() : Renvoie True si cette chaîne ne contient que des caractères
numériques.
§ islower() : Renvoie True si toutes les lettres dans cette chaîne sont minuscules et
il y a au moins une lettre.
§ isupper() : Renvoie True si toutes les lettres dans cette chaîne sont majuscules et
il y a au moins une lettre.
§ isspace() : Renvoie True si cette chaîne ne contient que des caractères blancs.

Génie informatique et génie logiciel 26 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Méthodes str Recherche


Les méthodes suivantes permettent de rechercher une chaîne
dans une autre chaîne.
§ endswith(s1) : Renvoie True si la chaîne se termine par la sous-
chaîne s1.
§ startswith(s1) : Renvoie True si la chaîne commence par la sous-
chaîne s1.
§ find(s1) : Renvoie l’indice le plus bas où s1 commence dans cette
chaîne, ou -1 si s1 ne se trouve pas dans cette chaîne.
§ rfind(s1) : Renvoie l’indice le plus élevé où s1 commence dans
cette chaîne, ou -1 si s1 ne se trouve pas dans cette chaîne.
§ count(s1) : Renvoie le nombre d’occurrences de s1.

Génie informatique et génie logiciel 27 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Méthodes str Conversion / Modification


Les méthodes suivantes permettent de convertir et modifier les chaînes de
caractères.
§ capitalize() : Renvoie une copie de cette chaîne avec seulement le premier
caractère en majuscule.
§ lower() : Renvoie une copie de cette chaîne avec toutes les lettres converties en
minuscules.
§ upper() : Renvoie une copie de cette chaîne avec toutes les lettres converties en
majuscules.
§ title() : Renvoie une copie de cette chaîne avec la première lettre en majuscule
dans chaque mot.
§ swapcase() : Renvoie une copie de cette chaîne dans laquelle les lettres minuscules
converties en majuscules et les lettres en majuscules converties en minuscules.
§ replace(old, new) : Retourne une nouvelle chaîne qui remplace toutes les
occurrences de la chaîne old par la chaîne new.
§ split() : Sépare une chaîne de caractère en fonction d’un séparateur spécifié en
argument et renvoie le résultat dans une liste.

Génie informatique et génie logiciel 28 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Méthodes str Élimination des espaces blancs


Les méthodes suivantes permettent de supprimer les caractères
d’espacement de l’extrémité gauche, droite, ou les deux d’une chaîne de
caractères.
Rappelons que les caractères « , \t, \f, \v, \r et \n » sont appelés des
caractères blancs
§ lstrip() : Retourne une chaîne avec les caractères blancs en début
enlevés.
§ rstrip() : Retourne une chaîne avec les caractères blancs à droite
supprimés.
§ strip() : Retourne une chaîne sans caractères blancs à gauche et
droite.

Génie informatique et génie logiciel 29 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Méthodes str Exemple


chaine = "Hello, World!"

print("La chaîne est alpha:", chaine.isalpha())


print("Indice de 'Wor':", chaine.find("Wor"))
print("Nombre de 'o':", chaine.count("o"))

chaine_maj = chaine.upper() Attention, il faut


print("Chaine en majuscules:", chaine_maj) stocker les résultats
chaine_a = chaine.replace('o', 'a') des transformations
print("Remplacement de 'o' par 'a':", chaine_a) dans une variable
La chaîne est alpha: False
Indice de 'Wor': 7
Nombre de 'o': 2
Chaine en majuscules: HELLO, WORLD!
Remplacement de 'o' par 'a': Hella, Warld!

Génie informatique et génie logiciel 30 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Planification de la séance
• Qu’est-ce qu’un caractère?
• Chaînes de caractères
• Opérations élémentaires
• Méthodes str
ØComposition et formatage

Génie informatique et génie logiciel 31 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Composition et formatage La fonction print()


• Souvent, il est nécessaire d’afficher la valeur de certaines variables à
l’écran. L’une des options à notre disposition est d’utiliser la fonction
print().
var1, var2 = 12, 47 Réponse 1: 12
print("Réponse 1:", var1, "\nRéponse 2:", var2) Réponse 2: 47

• Nous pouvons également créer une chaîne de caractère qui contient toute
l’information à afficher, en utilisant l’opérateur de concaténation, en
s’assurant que les variables disposent du bon type de données.
var = 42 La réponse est 42
chaine = "La réponse est " + str(var)
print(chaine)

Génie informatique et génie logiciel 32 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Composition et formatage La fonction format()


• La fonction format() permet de créer des chaînes de caractères plus facilement, en
pouvant spécifier le format des données entrées, sans devoir convertir les variables en
chaînes de caractères.

var1, var2 = 4238141, 5.43 Réponses: 4238141, 5.43


chaine1 = "Réponses: {}, {}".format( Réponses: 4.238e+06, 5.4
var1, var2)
chaine2 = "Réponses: {:.3e}, {:.1f}".format(
var1, var2) Formats usuels:
• e – Notation scientifique
print(chaine1)
print(chaine2) • f – Notation décimale
• g – Notation générale
• % – Pourcentage
Précision Format

Génie informatique et génie logiciel 33 H. 2023


INF1005D – Chaînes de caractères Chapitre 4

Composition et formatage Les f-strings


• Une alternative consiste à utiliser les f-strings, qui simplifient la
syntaxe pour formater des chaînes de caractères. Un f-string
nécessite la lettre « f » devant les guillemets.
nom, reponse = "John", 0.57
chaine = f"La réponse de {nom} est {reponse:.1%}"
print(chaine)

La réponse de John est 57.0%

Génie informatique et génie logiciel 34 H. 2023

Vous aimerez peut-être aussi