
Les chaînes de caractères Python offrent des dizaines de méthodes pour manipuler du texte : découper, assembler, nettoyer, remplacer, changer la casse. Ce sont les opérations les plus fréquentes dans un script, du traitement de logs à la lecture de fichiers CSV. Ce guide couvre les méthodes essentielles, split et join (découper et assembler), strip (nettoyer), replace (remplacer), les méthodes de casse (upper, lower), la recherche dans une chaîne, et les modernes removeprefix/removesuffix.
Il s'adresse aux débutants qui manipulent du texte et à celles et ceux qui automatisent du traitement de données. Un point structure tout le reste : en Python, les chaînes sont immuables, donc ces méthodes renvoient toujours une nouvelle chaîne. Pour le formatage (f-strings) et le découpage par tranches, voir les guides dédiés. Tous les exemples ont été exécutés avec Python 3.12.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Découper une chaîne avec
splitet la reconstruire avecjoin. - Nettoyer les espaces avec
strip,lstrip,rstrip. - Remplacer du texte avec
replace. - Changer la casse et rechercher dans une chaîne.
- Retirer proprement un préfixe ou suffixe avec
removeprefix/removesuffix.
Les chaînes sont immuables
Section intitulée « Les chaînes sont immuables »Avant tout, une règle qui explique le comportement de toutes les méthodes : une chaîne Python ne peut pas être modifiée après sa création. Chaque méthode renvoie donc une nouvelle chaîne, sans toucher à l'originale.
mot = "python"majuscule = mot.upper()
print(mot) # 'python' → inchangéprint(majuscule) # 'PYTHON' → nouvelle chaîneConséquence pratique : pour conserver le résultat, il faut le réassigner (mot = mot.upper()) ou le stocker dans une variable. Une méthode appelée sans récupérer son retour ne sert à rien.
Changer la casse
Section intitulée « Changer la casse »Les méthodes de casse transforment les majuscules et minuscules. Elles servent souvent à normaliser un texte avant de le comparer.
"python".upper() # 'PYTHON'"PYTHON".lower() # 'python'"bonjour".capitalize() # 'Bonjour' (première lettre)"jean dupont".title() # 'Jean Dupont' (chaque mot)Le cas d'usage le plus courant est la comparaison insensible à la casse : on met les deux chaînes en minuscules avant de les comparer.
reponse = "OUI"if reponse.lower() == "oui": print("Confirmé")Nettoyer avec strip
Section intitulée « Nettoyer avec strip »strip() retire les espaces (et sauts de ligne) au début et à la fin d'une chaîne. C'est indispensable pour nettoyer une saisie utilisateur ou une ligne lue dans un fichier.
" Bonjour le Monde ".strip() # 'Bonjour le Monde'" texte".lstrip() # 'texte' (gauche seulement)"texte ".rstrip() # 'texte' (droite seulement)Ces méthodes acceptent aussi un ensemble de caractères à retirer, ce qui mène à un piège fréquent détaillé plus bas.
Rechercher et tester
Section intitulée « Rechercher et tester »Pour savoir si un texte contient, commence ou finit par un motif, plusieurs outils existent. Le plus simple est l'opérateur in.
"Py" in "Python" # True"rapport.pdf".endswith(".pdf") # True"http://x".startswith("http") # True"abcabc".find("c") # 2 (position, ou -1 si absent)"abcabc".count("a") # 2 (nombre d'occurrences)inteste la simple présence.startswith/endswithvérifient le début ou la fin (parfait pour filtrer des extensions de fichiers).findrenvoie la position (ou-1si absent) ;indexfait pareil mais lève une erreur si absent.
Remplacer avec replace
Section intitulée « Remplacer avec replace »replace() remplace toutes les occurrences d'un texte par un autre.
"chat chat".replace("chat", "chien") # 'chien chien'"a a a".replace("a", "b", 2) # 'b b a' (limité à 2)Un troisième argument limite le nombre de remplacements. Pour remplacer par motif plutôt que par texte exact, passez aux expressions régulières avec re.sub.
Découper et assembler : split et join
Section intitulée « Découper et assembler : split et join »C'est le duo le plus utilisé pour traiter des données. split() transforme une chaîne en liste, join() fait l'inverse.
# split : chaîne -> liste"2026-07-02".split("-") # ['2026', '07', '02']"Python est génial".split() # ['Python', 'est', 'génial'] (sur les espaces)
# join : liste -> chaîne (appelé sur le séparateur)"-".join(["2026", "07", "02"]) # '2026-07-02'Sans argument, split() coupe sur les espaces et ignore les espaces multiples, ce qui est idéal pour découper une phrase en mots. Pour découper un texte en lignes, splitlines() gère tous les types de retours à la ligne :
"ligne1\nligne2\nligne3".splitlines() # ['ligne1', 'ligne2', 'ligne3']Tester le contenu d'une chaîne
Section intitulée « Tester le contenu d'une chaîne »Plusieurs méthodes renvoient un booléen selon la nature des caractères, utiles pour valider une saisie.
"42".isdigit() # True (que des chiffres)"abc".isalpha() # True (que des lettres)"abc123".isalnum() # True (lettres ou chiffres)" ".isspace() # True (que des espaces)Retirer un préfixe ou un suffixe
Section intitulée « Retirer un préfixe ou un suffixe »Voici le piège le plus courant avec les chaînes. On croit souvent que strip("motif") retire le mot motif. En réalité, strip retire des caractères, pas une sous-chaîne : il enlève chaque caractère de l'ensemble fourni.
"template.py".strip("template") # '.py' → surprise !# strip a enlevé t, e, m, p, l, a un par un depuis les bordsPour retirer un préfixe ou un suffixe exact, Python 3.9 a introduit removeprefix et removesuffix, qui traitent la chaîne entière :
"img_photo.png".removeprefix("img_") # 'photo.png'"rapport.pdf".removesuffix(".pdf") # 'rapport'Aligner et remplir
Section intitulée « Aligner et remplir »Pour produire des sorties alignées (tableaux, identifiants), quelques méthodes complètent une chaîne à une largeur donnée.
"42".zfill(5) # '00042' (zéros à gauche)"gauche".ljust(10) # 'gauche '"droite".rjust(10) # ' droite'À retenir
Section intitulée « À retenir »- Les chaînes sont immuables : chaque méthode renvoie une nouvelle chaîne, à réassigner.
splitdécoupe une chaîne en liste,joinassemble une liste en chaîne (appelé sur le séparateur).strip/lstrip/rstripnettoient les espaces aux bords.replaceremplace toutes les occurrences ; un 3ᵉ argument limite le nombre.upper/lowernormalisent la casse, souvent avant une comparaison.in,startswith/endswith,findcherchent dans une chaîne.- Piège :
strip("mot")retire des caractères, pas le mot ; utilisezremoveprefix/removesuffix(3.9). - Pour le formatage, voir les f-strings ; pour les motifs, les expressions régulières.
FAQ : les méthodes de chaînes en Python
Section intitulée « FAQ : les méthodes de chaînes en Python »split() découpe une chaîne et renvoie une liste :"a,b,c".split(",") # ['a', 'b', 'c']
"Python est génial".split() # ['Python', 'est', 'génial']
- Avec un séparateur, elle coupe dessus.
- Sans argument, elle coupe sur les espaces (et ignore les espaces multiples).
splitlines() :"l1\nl2\nl3".splitlines() # ['l1', 'l2', 'l3']
join() est l'inverse de split : elle assemble une liste de chaînes avec un séparateur. On l'appelle sur le séparateur :"-".join(["2026", "07", "02"]) # '2026-07-02'
", ".join(["pomme", "poire"]) # 'pomme, poire'
Attention : tous les éléments doivent être des chaînes. Pour joindre des nombres, convertissez-les d'abord :", ".join(str(n) for n in [1, 2, 3]) # '1, 2, 3'
strip() retire les espaces en début et fin de chaîne :" Bonjour ".strip() # 'Bonjour'
" Bonjour ".lstrip() # 'Bonjour ' (gauche seulement)
" Bonjour ".rstrip() # ' Bonjour' (droite seulement)
Elles acceptent aussi un ensemble de caractères à retirer : "...texte...".strip(".").Comme les chaînes sont immuables, ces méthodes renvoient une nouvelle chaîne sans toucher à l'originale.replace() remplace toutes les occurrences :"chat chat".replace("chat", "chien") # 'chien chien'
Un troisième argument limite le nombre de remplacements :"a a a".replace("a", "b", 2) # 'b b a'
Pour remplacer par motif (et non par texte exact), passez aux expressions régulières avec re.sub."python".upper() # 'PYTHON'
"PYTHON".lower() # 'python'
"bonjour".capitalize() # 'Bonjour'
"jean dupont".title() # 'Jean Dupont'
Usage fréquent : normaliser avant de comparer, pour ignorer la casse :if saisie.lower() == "oui":
...
strip retire des caractères, pas une sous-chaîne :"template.py".strip("template") # '.py' (mange t, e, m, p, l, a...)
Pour retirer un préfixe ou suffixe exact, utilisez removeprefix et removesuffix, ajoutés en Python 3.9 :"img_photo.png".removeprefix("img_") # 'photo.png'
"rapport.pdf".removesuffix(".pdf") # 'rapport'
Ces méthodes traitent la chaîne entière, pas caractère par caractère.Prochaines étapes
Section intitulée « Prochaines étapes »Manipuler du texte va de pair avec le formater, le découper par tranches ou en extraire des motifs.