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)

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éthodeRôleExemple
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.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