Aller au contenu
Développement medium

Méthodes des chaînes Python : split, join, strip, replace

9 min de lecture

logo python

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.

  • Découper une chaîne avec split et la reconstruire avec join.
  • 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.

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îne

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

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é")

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.

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)
  • in teste la simple présence.
  • startswith/endswith vérifient le début ou la fin (parfait pour filtrer des extensions de fichiers).
  • find renvoie la position (ou -1 si absent) ; index fait pareil mais lève une erreur si absent.

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.

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']

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)

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 bords

Pour 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'

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'
  • Les chaînes sont immuables : chaque méthode renvoie une nouvelle chaîne, à réassigner.
  • split découpe une chaîne en liste, join assemble une liste en chaîne (appelé sur le séparateur).
  • strip/lstrip/rstrip nettoient les espaces aux bords.
  • replace remplace toutes les occurrences ; un 3ᵉ argument limite le nombre.
  • upper/lower normalisent la casse, souvent avant une comparaison.
  • in, startswith/endswith, find cherchent dans une chaîne.
  • Piège : strip("mot") retire des caractères, pas le mot ; utilisez removeprefix/removesuffix (3.9).
  • Pour le formatage, voir les f-strings ; pour les motifs, les expressions régulières.

Manipuler du texte va de pair avec le formater, le découper par tranches ou en extraire des motifs.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn