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é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.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