Bases

Chaînes de caractères en Python : split, replace, strip, join, tranches et f-strings

Mis à jour: · Skillaria.Top

Une chaîne en Python (type str) est une suite immuable de caractères Unicode. split() découpe une chaîne en liste, join() reconstruit une chaîne à partir d'une liste, replace() remplace une sous-chaîne, strip() retire les espaces en début et en fin ; chaque méthode renvoie une nouvelle chaîne. Pour insérer des valeurs, le plus simple est une f-string : f"{nom}: {prix:.2f}".

Les chaînes de caractères sont présentes dans presque tous les programmes Python : saisie de l'utilisateur, noms de fichiers, lignes de CSV, réponses d'une API. Le type str stocke le texte en Unicode, si bien que les caractères accentués et les emojis fonctionnent sans configuration. Les méthodes les plus utilisées sont split, replace, strip et join, et pour afficher des valeurs, le plus pratique est la f-string. Voyons tout cela sur des exemples.

Comment fonctionne une chaîne en Python

On écrit une chaîne entre guillemets simples ou doubles, sans différence : 'café' et "café" sont identiques. Les triples guillemets créent une chaîne multiligne, dont les retours à la ligne sont conservés tels quels.

nom = "Café"
note = """Première ligne
Deuxième ligne"""
print(len(nom))  # 4 — longueur de la chaîne en caractères

La propriété essentielle des chaînes est leur immuabilité. Une méthode ne modifie pas la chaîne : elle en renvoie une nouvelle. Ainsi, s.replace("a", "b") sans affectation ne produit rien : il faut écrire s = s.replace("a", "b"). C'est l'erreur la plus fréquente chez les débutants.

Caractères spéciaux, retour à la ligne et chaînes brutes

Le retour à la ligne s'écrit \n, la tabulation \t, la barre oblique inverse \\. Le préfixe r crée une chaîne « brute » : les barres obliques inverses n'y sont pas interprétées. C'est pratique pour les chemins Windows et les expressions régulières.

print("Total :\n350 €")
chemin = r"C:\nouveau\tableau.csv"   # \n et \t ne deviennent pas des caractères spéciaux

Une expression longue peut être répartie sur plusieurs lignes du code en la plaçant entre parenthèses : Python assemble lui-même les littéraux de chaîne voisins.

split : découper une chaîne en liste

La méthode split() découpe la chaîne selon un séparateur et renvoie une liste. Sans argument, elle coupe sur tous les espaces et ignore les espaces répétés, ce qui est pratique pour analyser des commandes.

"ajout  Café 250".split()        # ['ajout', 'Café', '250']
"2026-10-16".split("-")          # ['2026', '10', '16']
"a,b,,c".split(",")              # ['a', 'b', '', 'c']
"clé=valeur=x".split("=", 1)     # ['clé', 'valeur=x']

Remarquez la différence : avec un séparateur explicite, les fragments vides sont conservés. Le second argument maxsplit limite le nombre de coupes, et rsplit() découpe depuis la droite. Pour répartir un texte en lignes, utilisez splitlines() : elle reconnaît \n comme \r\n et ne laisse pas d'élément vide à la fin.

texte = "café\ntaxi\n"
texte.split("\n")     # ['café', 'taxi', '']
texte.splitlines()    # ['café', 'taxi']

join : assembler une liste en chaîne

join() fait l'opération inverse. On l'appelle sur la chaîne servant de séparateur, et on lui passe une liste de chaînes :

articles = ["café", "taxi", "déjeuner"]
print(", ".join(articles))   # café, taxi, déjeuner
print("\n".join(articles))   # chaque élément sur une nouvelle ligne

Tous les éléments doivent être des chaînes, sinon vous obtenez TypeError: sequence item 0: expected str instance, int found. Convertissez d'abord les nombres : ", ".join(str(x) for x in montants).

Concaténation et assemblage de chaînes

On additionne deux chaînes avec + et on les répète avec * : "-" * 20. Mais assembler des centaines de fragments dans une boucle avec += est lent, car chaque fois une nouvelle chaîne est créée. Rassemblez plutôt les morceaux dans une liste et fusionnez-les d'un seul join(). On ne peut pas ajouter directement un nombre à une chaîne : "Total : " + 5 provoque une TypeError ; utilisez str() ou une f-string.

replace : remplacer une sous-chaîne

replace(ancien, nouveau) remplace toutes les occurrences de la sous-chaîne. Un troisième argument limite le nombre de remplacements.

prix = "1 250,50"
prix = prix.replace(" ", "").replace(",", ".")
print(float(prix))                   # 1250.5

"a-b-c".replace("-", "+", 1)         # 'a+b-c'

La méthode est sensible à la casse et cherche une correspondance exacte. Pour remplacer selon un motif (par exemple « tous les chiffres »), il faut le module re et la fonction re.sub().

strip, lstrip, rstrip : nettoyer une chaîne

strip() retire les espaces, les tabulations et les retours à la ligne aux deux extrémités. lstrip() nettoie seulement à gauche, rstrip() seulement à droite. C'est la première chose à faire avec une saisie utilisateur ou avec des lignes lues dans un fichier.

brut = "  Café \n"
brut.strip()       # 'Café'
brut.rstrip()      # '  Café'
"xxCafexx".strip("x")   # 'Cafe'

L'argument désigne un ensemble de caractères, et non une sous-chaîne : "abcTextecba".strip("abc") retire tous les a, b et c en bordure, dans n'importe quel ordre. Pour couper exactement un préfixe ou un suffixe, utilisez removeprefix() et removesuffix() (depuis Python 3.9).

Autres méthodes utiles des chaînes

MéthodeCe qu'elle faitExemple → résultat
lower(), upper()casse"Café".lower() → 'café'
startswith(), endswith()vérifie le début et la fin"a.csv".endswith(".csv") → True
find()position de la sous-chaîne ou -1"café".find("f") → 2
count()nombre d'occurrences"banane".count("a") → 3
isdigit()

Questions fréquentes

Comment connaître la longueur d'une chaîne en Python ?

La fonction len(s) renvoie le nombre de caractères. Pour les lettres accentuées et les emojis, on compte les caractères Unicode, et non les octets ; la taille en octets s'obtient avec len(s.encode("utf-8")).

Comment convertir un nombre en chaîne et inversement ?

str(250) donne '250', et int("250") ou float("2.5") effectuent la conversion inverse. Si la chaîne n'est pas un nombre, int() lève ValueError, il faut donc vérifier la saisie.

Pourquoi replace ne modifie-t-il pas ma chaîne ?

Les chaînes sont immuables, et replace renvoie une nouvelle chaîne. Affectez le résultat : s = s.replace("a", "b").

Comment vérifier qu'une chaîne est vide ?

Une chaîne vide est considérée comme fausse, il suffit donc d'écrire if not s:. Si la chaîne peut ne contenir que des espaces, testez if not s.strip():.

Quelle est la différence entre une t-string et une f-string ?

Une f-string renvoie immédiatement un str, alors qu'une t-string (Python 3.14 et plus) renvoie un objet Template avec les morceaux de texte et les valeurs séparés. Cela permet d'échapper proprement les données pour le HTML et le SQL.

Apprenez ce sujet en vidéo

Ce sujet est traité en détail avec de la pratique dans le cours « Python 3.15: от новичка до профи ».

Voir le cours