07 - Chaînes : méthodes
Prérequis : ce chapitre complète le chapitre 06 (Chaînes de caractères). Il utilise la boucle
for, présentée dans le chapitre 05 (Boucles). Si vous n’avez pas encore vu les boucles, vous pouvez revenir à la section « Parcourir une chaîne » plus tard.
Parcourir une chaîne
On peut parcourir les caractères d’une chaîne avec une boucle for :
mot = "NSI"
for lettre in mot:
print(lettre)
N
S
I
Pour avoir à la fois l’indice et le caractère, on utilise enumerate() :
mot = "NSI"
for i, lettre in enumerate(mot):
print(f"Indice {i} : {lettre}")
Indice 0 : N
Indice 1 : S
Indice 2 : I
Exemple concret. Compter le nombre de voyelles dans un mot :
mot = "programmation"
compteur = 0
for lettre in mot:
if lettre in "aeiouy":
compteur += 1
print(f"'{mot}' contient {compteur} voyelles")
'programmation' contient 5 voyelles
Méthodes de changement de casse
Les méthodes ne modifient pas la chaîne d’origine (rappel : les chaînes sont immuables). Elles renvoient une nouvelle chaîne.
mot = "Bonjour"
print(mot.upper()) # BONJOUR
print(mot.lower()) # bonjour
print(mot.capitalize()) # Bonjour (première lettre en majuscule)
print(mot) # Bonjour (l'original n'a pas changé)
Application. Comparer deux chaînes sans tenir compte de la casse :
saisie = "OUI"
if saisie.lower() == "oui":
print("L'utilisateur a confirmé")
Méthodes de recherche et remplacement
phrase = "Python est un langage puissant"
print(phrase.count("an")) # 2
print(phrase.find("langage")) # 14 (indice du début)
print(phrase.find("Java")) # -1 (non trouvé)
print(phrase.replace("puissant", "élégant")) # Python est un langage élégant
La méthode find() renvoie l’indice de la première occurrence, ou -1 si la sous-chaîne n’est pas trouvée. La méthode replace() remplace toutes les occurrences.
Méthodes de nettoyage
La méthode strip() supprime les espaces (et les retours à la ligne) en début et en fin de chaîne. C’est très utile pour nettoyer les saisies utilisateur ou les lignes lues dans un fichier :
saisie = " Alice "
print(saisie.strip()) # "Alice" (supprime des deux côtés)
print(saisie.lstrip()) # "Alice " (supprime à gauche)
print(saisie.rstrip()) # " Alice" (supprime à droite)
Découpage et assemblage
Ce sont les deux méthodes les plus utilisées pour traiter des données textuelles. Elles sont complémentaires : split() découpe une chaîne en liste, et join() assemble une liste en chaîne.
split() : découper une chaîne en liste
date = "28-03-2026"
morceaux = date.split("-")
print(morceaux) # ['28', '03', '2026']
# Accéder aux éléments
jour = morceaux[0]
mois = morceaux[1]
annee = morceaux[2]
print(f"Jour : {jour}, Mois : {mois}, Année : {annee}")
['28', '03', '2026']
Jour : 28, Mois : 03, Année : 2026
Sans argument, split() découpe sur les espaces (un ou plusieurs) :
phrase = " Python est génial "
mots = phrase.split()
print(mots) # ['Python', 'est', 'génial']
join() : assembler une liste en chaîne
La méthode join() s’appelle sur le séparateur et reçoit la liste en argument :
mots = ["Python", "est", "génial"]
phrase = " ".join(mots)
print(phrase) # Python est génial
csv_ligne = ";".join(["Alice", "17", "1NSI"])
print(csv_ligne) # Alice;17;1NSI
Application. Inverser les mots d’une phrase :
phrase = "les chaînes sont utiles"
mots = phrase.split()
mots.reverse()
resultat = " ".join(mots)
print(resultat) # utiles sont chaînes les
Méthodes de vérification
Ces méthodes renvoient un booléen (True ou False) :
print("42".isdigit()) # True (ne contient que des chiffres)
print("abc".isalpha()) # True (ne contient que des lettres)
print("abc123".isalnum()) # True (lettres et chiffres uniquement)
print("HELLO".isupper()) # True
print("hello".islower()) # True
Application. Vérifier qu’une saisie est bien un nombre avant de la convertir :
saisie = input("Entrez un nombre : ")
if saisie.isdigit():
nombre = int(saisie)
print(f"Le double est {nombre * 2}")
else:
print("Ce n'est pas un nombre valide")
Résumé des méthodes
| Méthode | Rôle | Exemple |
|---|---|---|
s.upper() | Tout en majuscules | "nsi".upper() → "NSI" |
s.lower() | Tout en minuscules | "NSI".lower() → "nsi" |
s.capitalize() | Première lettre en majuscule | "nsi".capitalize() → "Nsi" |
s.strip() | Supprimer les espaces aux extrémités | " ok ".strip() → "ok" |
s.find(x) | Indice de la première occurrence (-1 si absent) | "abc".find("b") → 1 |
s.count(x) | Nombre d’occurrences | "abab".count("ab") → 2 |
s.replace(a, b) | Remplacer toutes les occurrences | "abc".replace("b", "X") → "aXc" |
s.split(sep) | Découper en liste | "a-b".split("-") → ["a", "b"] |
sep.join(L) | Assembler une liste en chaîne | "-".join(["a", "b"]) → "a-b" |
s.isdigit() | Ne contient que des chiffres ? | "42".isdigit() → True |
s.isalpha() | Ne contient que des lettres ? | "abc".isalpha() → True |
s.startswith(x) | Commence par x ? | "Python".startswith("Py") → True |
s.endswith(x) | Finit par x ? | "fichier.csv".endswith(".csv") → True |