ROYAUME DU MAROC
مكتب التكوين المهني وإنعاش الشغل
office de la formation professionnelle et de la promotion du travail
ISMONTIC TANGER
LES CHAINES DE CARACTÈRES
ADDARRAZI ILHAM
2021-2022
Les chaines de cacaotières: Définition
1. Définition
Une chaîne de caractères est un ensemble ordonné de caractères. Les caractères
peuvent être des lettres (majuscules ou minuscules), des chiffres, des signes de
ponctuation, des symboles ou même des caractères dit « spéciaux ».
Les chaines de caractères ("string" en anglais) sont des listes de caractères.
On parle de chainage car les caractères se suivent et chaque caractère a sa place,
comme les maillons d'une chaine. Il est ainsi possible de faire apparaitre
plusieurs fois le même caractère dans une chaine, afin de manipuler des phrases
par exemple.
C’est une structure de données correspondant à une suite de caractères. En
Python, ce sont des objets de type «string» délimités par des simples ou doubles
quotes.
Les chaines de cacaotières: Déclaration
En Python, on représente une chaîne de caractères en plaçant les caractères la
constituant entre une paire de guillemets ou une paire d’apostrophes :
ch1 = "Hello World!"
ch2 = 'Ceci est une chaîne de caractères‘
type(ch1) #<type 'str'>
Il est également possible de déclarer une chaîne multiligne en l'encadrant avec
des triples " " ", ce qui donne :
monTexte="""Bonjour
... TDM 102
... Cours : Python
... Contenu: Chaine de caractère
... """
Manipulation des chaînes de caractères
Les chaînes de caractères, en tant qu’ensemble ordonnés de caractères, ont
beaucoup de choses en commun avec les listes. Par exemple, on peut créer une
nouvelle chaîne de caractères en concaténant deux chaînes existantes avec
l’opérateur + :
ch1 = "Hello World!"
ch2 = 'Ceci est une chaîne de caractères‘
ch1+ch2 #'Hello World!Ceci est une chaîne de caractères‘
Ou bien créer une chaîne de caractères par répétition d’une autre chaîne de
caractères avec l’opérateur de multiplication *
ch1 = "Hello World!«
ch1*3 #'Hello World!Hello World!Hello World!'
Manipulation des chaînes de caractères
On peut également, comme une liste, déterminer la longueur d’une chaîne de
caractères avec la fonction len :
ch1 = "Hello World!"
len(ch1) #12
On peut, comme pour une liste, obtenir un caractère de la chaîne en précisant sa
position entre crochets :
ch1 = "Hello World!’’
ch1[6] #’W’
ch1[-2] #’d’
On constate ici que, pour une chaîne également, le premier caractère se trouve à la
position d’indice 0. Un indice négatif permet, comme pour une liste, de désigner
un caractère en partant de la fin de la chaîne
Manipulation des chaînes de caractères
On peut également construire une sous-chaîne ou une chaîne regroupant certains
des caractères en utilisant un « slice » :
ch1 = "Hello World!’’
ch1[:5] #output : 'Hello‘
ch1[8:10] #output :'rl'
ch1[-6:] #output: 'World!‘
ch1[1::2] #output : 'el ol!'
Au contraire des listes, qui peuvent contenir des objets de tous types, une chaîne
de caractères ne contient que des caractères ! Python n’a pas de type particulier
pour représenter un caractère unique, on utilise simplement une chaîne de
caractères de longueur égale à 1.
Manipulation des chaînes de caractères
Une autre différence, majeure, entre les listes et les chaînes de caractères est
qu’une chaîne de caractères n’est pas modifiable (on dit qu’elle est immutable) :
ch1[6] = "w“ #TypeError: 'str' object does not support item assignment
Il faudra créer une nouvelle chaîne, en écrivant par exemple :
ch1 = ch1[:6] + "w" + ch1[7:] #Output: 'Hello world
Égalité de chaînes
Comme pour la plupart des objets Python, on peut tester si deux chaînes sont
égales avec l’opérateur ==.
Deux chaînes sont égales si et seulement si elles contiennent exactement les
mêmes caractères, dans le même ordre (majuscules et minuscules ont de
l’importance).
Exemple:
ch1="Hello"
ch2="hello"
ch3="Hello"
print(ch1==ch2) #False
print(ch1==ch3) #True
print("Hello"==ch1) #True
L’opérateur != permet, comme pour d’autres objets, de tester si deux chaînes
sont différentes.
print(ch1!=ch2) #True
Conversion
Conversion d'une valeur numérique en chaîne de caractères
Une première chose qu'il est utile de savoir faire en pratique : convertir une
valeur numérique en chaîne de caractères.
Ceci est obligatoire lorsque l'on souhaite intégrer une valeur numérique dans
une chaîne passée en paramètre à une fonction. Exemple :
a=321
print ("valeur" + a) #affiche un erreur
On obtient un message d'erreur ! la chaîne est considérée logiquement
comme un type str mais la valeur numérique est considérée comme un int.
Pour résoudre ce problème, il faut simplement « caster », c'est à dire transformer
le int en str ce qui se fait en faisant : str(variable):
a=321
print ("valeur" + str(a))
ch1="Valeur"+str(a)
print(ch1)
Conversion
Conversion d'une chaîne de caractères en valeur numérique
Une autre situation que l'on rencontre souvent : extraire une valeur numérique à
partir d'une chaîne. Typiquement, on obtiendra une chaîne à partir d'une saisie
utilisateur ou bien une réception sur le port série ou le réseau. Exemple :
a="321"
a=a+3
print(a) #Affiche erreur
Cette fois, on retrouve le même message d'erreur que précédemment, mais ici
nous voulions le résultat opposé : réalisé une opération mathématique sur la
valeur a, défini ici comme une chaîne.
Il va falloir là encore « caster » la variable, c'est à dire la transformer dans un
type numérique, au choix int, long ou float, ce qui donne :
a="321"
a=int(a)+3
print(a) #affiche : 324
Parcours d'une séquence
Avec for
Méthode 1:
chaine="Bonjour TDM102"
for i in range(len(chaine)):
print(f" le caractere numero {i} est : {chaine[i]}")
Exécution:
Parcours d'une séquence
Avec for
Méthode 2:
chaine="Bonjour TDM102"
for element in chaine:
print(element)
Exécution:
Parcours d'une séquence
Avec while:
chaine="Bonjour TDM102"
i=0
while(i<len(chaine)):
print(f"Le caractere numero {i} : {chaine[i]}")
i=i+1
Exécution:
Test de la composition d'une chaîne
Vérifier si tous les caractères d'une chaîne sont des chiffres
str.isdigit(): renvoie True si tous les caractères d'une chaîne donnée sont des chiffres.
Vérifier si tous les caractères d'une chaîne sont des alphabétiques
str.isalpha():renvoieTrue si tous les caractères d'une chaîne donnée sont
alphabétiques,
Vérifier si tous les caractères d'une chaîne sont des alphanumériques
str.isalnum(): renvoie True si tous les caractères sont alphanumériques et qu'il y a au
moins un caractère
Exemple:
ch1="102"
print(ch1.isdigit()) #True
print(ch1.isalpha()) #False
ch2="TDM"
print(ch2.isdigit()) #False
print(ch2.isalpha()) #True
ch3="TDM 102"
print(ch2.isdigit()) #False
print(ch2.isalpha()) #False
print(ch2.isalnum()) #True
La capitalisation d'une chaîne
1. Test de la capitalisation d'une chaîne
Vérifier si tous les caractères d'une chaîne sont en majuscule
str.isupper() est une méthode qui renvoie True si tous les caractères d'une chaîne
donnée sont en majuscule et False sinon.
Vérifier si tous les caractères d'une chaîne sont en minuscule
str.islower() est une méthode qui renvoie True si tous les caractères d'une chaîne
donnée sont en minuscule et False sinon.
Vérifier si une chaîne est un titre
str.istitle() retourne True si la chaîne donnée est un titre; c'est-à-dire que chaque mot
commence par un caractère majuscule suivi de caractères minuscule.
Exemple: ch3="tdm"
ch1="TDM" print(ch3.isupper()) #False
print(ch1.isupper()) #True print(ch3.islower()) #True
print(ch1.islower()) #False ch4="TDM102"
ch2="TdM" print(ch4.isupper()) #True
print(ch2.isupper()) #False print(ch4.islower()) #False
ch5="Tdm"
print(ch2.islower()) #False
print(ch5.istitle()) #True
La capitalisation d'une chaîne
2. Changer la capitalisation d’une chaine
Mettre en majuscule une chaine:
upper(): permet de mettre en majuscule une chaine de caractères.
Mettre en minuscule une chaine:
lower() permet de mettre en minuscule une chaine de caractères.
Exemple:
ch1="tdm"
ch2=ch1.upper()
print(ch2) #affiche TDM
ch1="TDM"
ch2=ch1.lower()
print(ch2) #affiche tdm
ch1="tDM"
ch2=ch1[0].upper()+ch2[1:3].lower()
print(ch2) #Tdm
Remplacer un segment d'une chaine
de caractères par une autre
Pour remplacer une chaîne de caractères par une autre, il faut utiliser la méthode
replace. La valeur de retour est la chaîne modifiée.
Exemple:
ch1="ofaat"
ch2=ch1.replace("a","p")
print("Avant ",ch1) #affiche : ofaat
print("Apres",ch2) #affiche :ofppt
ch1="Bonklur TDM102"
ch2=ch1.replace("kl","jo")
print("Avant ",ch1) #affiche : Bonklur TDM102
print("Apres",ch2) #affiche : Bonjour TDM102
Scinder une chaîne
Scinder une chaîne à l'aide d'un caractère de séparation: Une opération que l'on
peut être fréquemment amené à réaliser sur une chaîne : la « couper » en sous-
chaînes séparées par un séparateur précis. Par exemple, couper la chaîne « coucou,
salut, hello » en « coucou » « salut » et « hello ».
La fonction qui permet cela est la fonction split du type str : cette fonction reçoit en
paramètre le séparateur et renvoie un objet list contenant toutes les sous-chaînes
obtenues.
Exemple:
chaine="coucou,salut,hello"
mots=chaine.split(",")
print(mots) #['coucou', 'salut', 'hello']
Scinder une chaîne
Scinder une chaîne multi-lignes en lignes: Une opération très pratique est la
possibilité de scinder une chaîne multilignes en lignes individuelles, simplement à
l'aide de la fonction splitlines() de l'objet str.
Exemple:
chaine=""" Bonjour les amis.
... Comment allez-vous ?
... Moi je vais bien
... """
mots=chaine.splitlines()
print(mots) #[' Bonjour les amis.', '... Comment allez-vous ?', '... Moi je vais bien', '... ']
Autres méthodes
swapcase() : convertit toutes les majuscules en minuscules, et vice-versa :
chaine="BoNjOuR tDm102"
chaine2=chaine.swapcase()
print(chaine2) # bOnJoUr TdM102
find(sch) : cherche la position d’une sous-chaine sch dans la chaine :
chaine1="Bonjour TDM102"
chaine2="TDM"
print(chaine1.find(chaine2)) #8
count(sch) : compte le nombre de sous-chaines sch dans la chaine :
chaine1="Bonjour TDM102"
print(chaine1.count("o")) #2
Autres méthodes
strip() : enlevé les espaces éventuels au début et a la fin de la chaine :
chaine1=" Bonjour TDM102"
chaine2=chaine1.strip()
print(chaine2)
print(chaine1)
index(car) : retrouve l’indice (index) de la première occurrence du caractère car
dans la chaine :
chaine1="Bonjour TDM102"
print(chaine1.index("D")) #9
print(chaine1.index("2")) #13
Convertir une liste en string et vice versa
Transformer une liste en chaîne de caractère
La méthode join transforme une liste en chaine de caractères.
Exemple:
l = ["Bonjour" , "TDM 102", "Cours", "Python"]
chaine = ‘ '.join(l)
print(chaine) #Bonjour TDM 102 Cours Python
chaine=':'.join(l)
print(chaine) #Bonjour:TDM 102:Cours:Python
Convertir une liste en string et vice versa
Transformer une chaine en une liste
La méthode split() transforme une chaine de caractère en une liste.
Exemple:
chaine="Bonjour TDM 102"
l=chaine.split()
print(l) #['Bonjour', 'TDM', '102']
Exercice d’application
soit: listeAnimals = ['chien','chat','crocodile']
1. Afficher la longueur de chaque animal
2. Transformer cette liste en une chaine de caratere