Sur cette page

Chaînes Python : convertir, nettoyer, rechercher et formater

Les chaînes sont le type de données que vous touchez le plus souvent en Python : les saisies des utilisateurs, le contenu des fichiers, les pages web et les lignes de CSV arrivent tous sous forme de texte. Elles sont faciles à sous-estimer, car une chaîne Python est immuable : aucune méthode ne la modifie sur place ; chaque opération renvoie une nouvelle chaîne. Cette page organise les 115 guides DelftStack consacrés aux chaînes selon le travail que vous êtes en train de faire, le long de quatre lignes de tâches : convertir le texte vers d’autres types et dans l’autre sens, nettoyer les caractères qui n’y ont pas leur place, rechercher et vérifier ce qu’une chaîne contient, et formater ou remplacer du texte pour l’affichage.

Les opérations sur les chaînes Python en un coup d’œil : convertir, nettoyer, rechercher et formater du texte

Le parcours d’apprentissage des chaînes

Commencez par cinq minutes de bases : comment les chaînes se construisent, s’indexent et se découpent en tranches, et pourquoi l’immuabilité signifie que vous devez toujours conserver la valeur de retour. Apprenez ensuite à rechercher et à nettoyer : find(), l’opérateur in, strip() et replace() couvrent l’essentiel du travail quotidien sur le texte. Passez ensuite à la conversion, où les chaînes échangent leur place avec les listes, les nombres, les dictionnaires et les octets. Terminez par le formatage et le remplacement, où les f-strings sont le choix par défaut et où les styles plus anciens n’apparaissent que là où ils gagnent encore leur place. Chaque étape ci-dessous est un groupe de cette page, dans l’ordre où il faut les apprendre.

Les bases en cinq minutes : construire, joindre et répéter

Une chaîne est une suite de caractères entre guillemets simples ou doubles ; les guillemets triples s’étendent sur plusieurs lignes, et l’indexation associée aux tranches permet de lire n’importe quelle partie. Deux faits font l’essentiel du travail : len() mesure une chaîne, et construire une chaîne plus longue produit toujours une nouvelle valeur.

  • Répéter la chaîne N fois en Python — Multiplie avec * pour un nombre fixe de copies, puis répète et découpe en tranches pour atteindre une longueur cible exacte, en validant les sources vides et les longueurs négatives.
  • Copier la chaîne en Python — Six voies pour dupliquer — concaténation avec une chaîne vide, tranche complète, str(), %, format() et f-strings — après avoir expliqué pourquoi l’immuabilité fait que les deux variables partagent une seule valeur.
  • Créer une chaîne multi-lignes en Python — Les guillemets triples pour un vrai texte multiligne, la barre oblique inverse et la concaténation entre parenthèses pour une seule ligne logique, et textwrap.fill() pour une sortie à largeur fixe.
  • Ajouter une chaîne à une autre en Python — + contre str.join() ; join() l’emporte pour de nombreuses pièces, car chaque + construit une nouvelle chaîne intermédiaire.

Convertir : des chaînes vers les listes, les nombres et inversement

C’est dans la conversion que le travail sur les chaînes gagne sa valeur : les données arrivent sous forme de texte et servent à autre chose. Les listes sont la porte la plus fréquentée, les nombres viennent ensuite ; les conteneurs s’aplatissent avec str() ou join(), et les octets ne traversent que par des encodages explicites. Un voisin vit ailleurs : convertir un datetime en chaîne relève des guides Datetime — voir la section Datetime du pilier Python.

Nettoyer et supprimer : retirer ce qui n’a pas sa place

Le nettoyage est le terrain de jeu local de ce cluster : les pages aspirées, les exports et les saisies des utilisateurs arrivent avec des caractères qui n’ont jamais été invités. Choisissez selon la forme de la saleté : replace() pour une sous-chaîne connue, translate() avec une table pour un ensemble entier de caractères en une fois, et les expressions régulières quand la saleté est un motif, pas un littéral.

Rechercher, vérifier et compter

La recherche est la plus grande demande insatisfaite de ce cluster : les lecteurs connaissent le caractère qu’ils veulent et ont besoin de sa position, de son nombre, ou d’une réponse par oui ou non. Gardez la répartition du travail claire : in répond à la question « est-ce présent », find() répond « où est le premier », index() répond « où » et proteste bruyamment quand il n’y a aucune correspondance, et count() répond « combien ».

Casse, comparaison et remplissage

C’est sur la casse que les comparaisons déraillent en silence : Python compare par point de code Unicode, donc la casse et les lettres spéciales comptent toutes. Normalisez avant de comparer — lower() ou upper() pour le texte ordinaire, casefold() quand les paires Unicode doivent correspondre — et remplissez avec ljust(), rjust(), center() ou zfill() pour la présentation.

Formater et remplacer

Pour du code nouveau, formater signifie f-strings : les valeurs siègent dans le modèle, là où vous pouvez les lire, et les spécifications de format contrôlent la largeur et la précision. str.format() reste le bon choix quand le modèle vit séparément ou est réutilisé, et le formatage en % survit dans le code ancien que vous continuerez de croiser. Le remplacement obéit à l’immuabilité comme tout le reste : vous ne modifiez jamais une chaîne, vous construisez celle qui est corrigée.

Carte des méthodes de chaîne

Python livre 47 méthodes de chaîne intégrées, et cette carte trouve rapidement la bonne. Lisez-la par verbe : la famille is* vérifie, les méthodes de casse transforment, split et join démontent et reconstruisent, les méthodes de recherche localisent. Là où un guide approfondit une méthode, la troisième colonne y renvoie ; une cellule vide signifie que la description en une ligne suffit.

Méthode Ce qu’elle fait Pour approfondir
capitalize() Met en majuscule le premier caractère et le reste en minuscules Pour approfondir
casefold() Minuscules agressives, pensées pour la comparaison insensible à la casse Pour approfondir
center() Centre la chaîne dans un champ de la largeur donnée Pour approfondir
count() Compte les occurrences sans chevauchement d’une sous-chaîne Pour approfondir
encode() Encode la chaîne en octets dans l’encodage choisi Pour approfondir
endswith() Teste si la chaîne se termine par un suffixe
expandtabs() Remplace les caractères de tabulation par des espaces
find() Plus petit index d’une sous-chaîne, ou -1 lorsqu’elle est absente Pour approfondir
format() Formate des valeurs dans des espaces réservés {}
format_map() Comme format(), avec des valeurs prises dans un mapping
index() Plus petit index d’une sous-chaîne ; lève ValueError lorsqu’elle est absente Pour approfondir
isalnum() Vrai lorsque chaque caractère est une lettre ou un chiffre Pour approfondir
isalpha() Vrai lorsque chaque caractère est alphabétique
isascii() Vrai lorsque chaque caractère est ASCII
isdecimal() Vrai lorsque chaque caractère est un chiffre décimal
isdigit() Vrai lorsque chaque caractère est un chiffre Pour approfondir
isidentifier() Vrai lorsque la chaîne est un identifiant Python valide
islower() Vrai lorsque toutes les lettres sont en minuscules
isnumeric() Vrai lorsque chaque caractère est numérique
isprintable() Vrai lorsque chaque caractère est imprimable
isspace() Vrai lorsque chaque caractère est un espace
istitle() Vrai lorsque la chaîne est en casse de titre
isupper() Vrai lorsque toutes les lettres sont en majuscules
join() Joint un itérable de chaînes en utilisant cette chaîne comme séparateur Pour approfondir
ljust() Justifie à gauche dans un champ de la largeur donnée Pour approfondir
lower() Renvoie une copie en minuscules Pour approfondir
lstrip() Retire les caractères en tête (les espaces par défaut)
maketrans() Construit une table de traduction pour translate() Pour approfondir
partition() Scinde au premier séparateur en un tuple de trois parties
removeprefix() Retire un préfixe lorsqu’il est présent
removesuffix() Retire un suffixe lorsqu’il est présent
replace() Remplace les occurrences d’une sous-chaîne par une autre Pour approfondir
rfind() Plus grand index d’une sous-chaîne, ou -1 lorsqu’elle est absente Pour approfondir
rindex() Plus grand index d’une sous-chaîne ; lève ValueError lorsqu’elle est absente
rjust() Justifie à droite dans un champ de la largeur donnée Pour approfondir
rpartition() Scinde au dernier séparateur en un tuple de trois parties
rsplit() Scinde sur un séparateur, en comptant depuis la droite
rstrip() Retire les caractères en queue (les espaces par défaut)
split() Scinde sur un séparateur en une liste Pour approfondir
splitlines() Scinde aux limites de ligne en une liste
startswith() Teste si la chaîne commence par un préfixe Pour approfondir
strip() Retire les caractères en tête et en queue Pour approfondir
swapcase() Renvoie une copie avec la casse de chaque caractère inversée
title() Renvoie une copie en casse de titre, chaque mot commençant par une majuscule
translate() Mappe les caractères à travers une table de traduction Pour approfondir
upper() Renvoie une copie en majuscules Pour approfondir
zfill() Rembourre avec des zéros en tête jusqu’à la largeur donnée Pour approfondir

Questions fréquentes

Comment convertir une chaîne en liste en Python ?

Décidez ce qu’un élément doit être, puis choisissez l’outil qui correspond. list(text) donne un élément par caractère ; text.split() donne des mots, et text.split(",") donne des champs séparés par un délimiteur, en préservant les champs vides. Pour un texte qui ressemble déjà à une liste Python, analysez-le avec ast.literal_eval() et vérifiez que le résultat est bien une liste. N’utilisez jamais eval() sur une entrée que vous ne contrôlez pas. Le parcours complet se trouve dans Comment convertir une chaîne de caractères en liste en Python.

Comment vérifier si une chaîne contient une sous-chaîne ou un mot ?

Pour un simple test de sous-chaîne, utilisez l’opérateur in : "word" in text renvoie un booléen et respecte la casse. Quand il vous faut aussi la position, find() renvoie le premier index ou -1, tandis qu’index() lève ValueError à la place. Notez qu’in correspond aussi à l’intérieur de mots plus grands — "is" in "This" est vrai — donc, pour un mot entier, tokenisez ou utilisez une expression régulière avec des frontières \b, comme le montre Vérifier si une chaîne contient un mot en Python.

Comment retirer la ponctuation ou les caractères spéciaux d’une chaîne ?

Définissez d’abord ce qui doit partir : la ponctuation seulement, ou tout ce qui n’est ni une lettre ni un chiffre. Pour la ponctuation, filtrez contre string.punctuation, substituez avec l’expression régulière [^\w\s], ou supprimez un ensemble entier en une fois avec une table str.translate() construite par maketrans() — l’option la plus rapide. Pour un nettoyage plus large, un filtre isalnum() conserve les lettres et les chiffres Unicode. Comment enlever la ponctuation d’une chaîne de caractères en Python passe chaque variante en revue.

Pourquoi Python dit-il « not all arguments converted during string formatting » ?

Ce TypeError vient du formatage en % : le modèle contient moins d’espaces réservés que le tuple de valeurs que vous avez fourni, donc Python arrive à la fin du modèle avec des arguments en trop — par exemple "Value: " % (1, 2). Donnez à chaque valeur exactement un espace réservé, enveloppez une valeur unique dans un tuple à un élément, et échappez un signe pour cent littéral en %%`. Un guide dédié à cette erreur la dissèque cas par cas.

Existe-t-il un toString() en Python ?

Non. Python n’a pas de méthode toString() ; la chercher est une habitude héritée de Java. L’équivalent est la fonction intégrée str(value), qui renvoie une chaîne lisible pour les nombres, les collections et la plupart des objets. Utilisez join() pour combiner de nombreuses chaînes, les f-strings pour construire des messages, et définissez __str__() sur vos propres classes pour contrôler leur affichage. Notez que str() produit du texte d’affichage, pas du JSON ni du CSV. Voir Équivalent de tostring() en Python.

Comment remplacer un caractère à un index précis ?

Vous ne pouvez pas affecter dans une chaîne — text[2] = "m" lève TypeError, car les chaînes sont immuables. Construisez le remplacement à la place : découpez autour de la position, text[:2] + "m" + text[3:], ou convertissez en liste, affectez à l’index, et rejoignez avec "".join(...). Les deux renvoient une nouvelle chaîne et laissent l’originale intacte ; validez l’index contre len(text) lorsqu’il vient d’une saisie utilisateur. Remplacer le caractère dans la chaîne à l’index en Python montre les deux méthodes.

Tous les guides sur les chaînes Python

Bases

Convertir

Nettoyer et supprimer

Rechercher, vérifier et compter

Casse, comparaison et remplissage

Formater et remplacer

Plus d’articles sur les chaînes