Remplacer du texte avec replace() en Python

La méthode replace() permet de remplacer du texte à l'intérieur d'une chaîne de caractères en Python. Elle recherche une sous-chaîne donnée et la remplace par une autre chaîne. Elle peut remplacer toutes les occurrences trouvées ou seulement un nombre déterminé d'entre elles.

Dans ce tutoriel, nous allons découvrir le fonctionnement de replace(), sa syntaxe, son paramètre permettant de limiter le nombre de remplacements et plusieurs utilisations pratiques pour manipuler les chaînes de caractères.

1. À propos de replace() en Python

Les objets de type str possèdent une méthode appelée replace(). Celle-ci permet de rechercher une sous-chaîne dans une chaîne et de la remplacer par une autre.

Dans l'exemple suivant, nous remplaçons le mot Java par Python dans une phrase.

Sortie :

La méthode replace() recherche la chaîne Java et la remplace par Python.

2. Syntaxe de la méthode replace()

La méthode replace() reçoit obligatoirement la sous-chaîne à rechercher et celle qui doit la remplacer. Elle accepte également un troisième argument facultatif permettant de limiter le nombre de remplacements.

La syntaxe générale de la méthode est la suivante :

Sortie :

Les paramètres de replace() ont les rôles suivants :

  • ancienne : sous-chaîne que l'on souhaite rechercher et remplacer ;
  • nouvelle : chaîne qui remplacera l'ancienne ;
  • nombre : paramètre facultatif indiquant le nombre maximal de remplacements à effectuer.

Dans sa forme la plus courante, seuls les deux premiers arguments sont utilisés. Toutes les occurrences de la sous-chaîne recherchée sont alors remplacées.

Sortie :

Comme aucun troisième argument n'a été fourni, les deux occurrences de Python ont été remplacées.

3. Remplacer un mot dans une chaîne

L'une des utilisations les plus courantes de replace() consiste à remplacer un mot par un autre dans une phrase ou dans un texte.

Dans l'exemple suivant, nous remplaçons le mot difficile par le mot facile.

Sortie :

La sous-chaîne difficile est remplacée par facile sans modifier le reste de la phrase.

Remplacer une expression complète

La valeur recherchée peut également être composée de plusieurs mots. replace() peut donc remplacer une expression complète.

Sortie :

La méthode remplace ici toute la séquence de caractères correspondant à l'expression le langage Python.

4. Remplacer un caractère dans une chaîne

La méthode replace() peut aussi être utilisée pour remplacer un seul caractère. Il suffit de fournir des chaînes contenant chacune un caractère.

Dans l'exemple suivant, toutes les lettres a sont remplacées par des étoiles.

Sortie :

Chaque occurrence du caractère a a été remplacée par le caractère *.

Remplacer un séparateur

Le remplacement de caractères est particulièrement utile pour changer le séparateur utilisé dans une chaîne de données.

Sortie :

Les caractères / sont remplacés par des tirets, ce qui permet de modifier simplement la présentation de la date.

5. Remplacer toutes les occurrences d'une sous-chaîne

Lorsque le troisième paramètre est omis, replace() remplace par défaut toutes les occurrences de la sous-chaîne recherchée.

Dans l'exemple suivant, le mot chat apparaît trois fois. Toutes ses occurrences sont remplacées par chien.

Sortie :

Les trois occurrences de chat sont remplacées car aucune limite n'a été spécifiée.

Le texte de remplacement peut être plus court ou plus long que le texte recherché. Python construit automatiquement une nouvelle chaîne de la longueur nécessaire.

Sortie :

Le remplacement fonctionne même si Python contient davantage de caractères que HTML.

6. Limiter le nombre de remplacements

Le troisième argument facultatif de replace() permet de définir le nombre maximal d'occurrences à remplacer. Les remplacements sont effectués en partant de la gauche.

Dans l'exemple suivant, nous demandons à Python de remplacer uniquement la première occurrence de Python.

Sortie :

Seule la première occurrence est remplacée puisque le troisième argument vaut 1.

Remplacer les deux premières occurrences

Pour remplacer les deux premières occurrences, il suffit de fournir la valeur 2 comme troisième argument.

Sortie :

Les deux premières occurrences sont remplacées tandis que les suivantes restent inchangées.

7. Comprendre que replace() ne modifie pas la chaîne originale

Les chaînes de caractères Python sont immuables. Cela signifie qu'une chaîne existante ne peut pas être modifiée directement. La méthode replace() retourne donc une nouvelle chaîne.

Dans l'exemple suivant, nous affichons la chaîne originale après l'appel à replace() afin de vérifier qu'elle n'a pas été modifiée.

Sortie :

La variable texte contient toujours sa valeur originale. La chaîne modifiée est stockée dans la variable resultat.

Réaffecter le résultat à la même variable

Si l'on souhaite conserver uniquement la nouvelle version du texte, on peut réaffecter le résultat de replace() à la variable originale.

Sortie :

La variable texte référence désormais la nouvelle chaîne produite par replace().

8. Supprimer du texte avec replace()

La méthode replace() peut servir à supprimer une sous-chaîne. Pour cela, il suffit de la remplacer par une chaîne vide "".

Dans l'exemple suivant, nous supprimons le mot très de la phrase.

Sortie :

La chaîne "très ", espace compris, est remplacée par une chaîne vide. Elle disparaît donc du résultat.

Supprimer un caractère particulier

La même technique permet de supprimer tous les caractères indésirables d'un certain type. Dans cet exemple, nous supprimons les tirets d'un numéro.

Sortie :

Toutes les occurrences du caractère - ont été remplacées par une chaîne vide.

9. Remplacer les espaces et les caractères spéciaux

La méthode replace() est fréquemment utilisée pour remplacer les espaces par un autre séparateur, notamment lorsqu'on prépare une chaîne destinée à être utilisée comme identifiant ou comme partie d'une URL.

Dans l'exemple suivant, chaque espace est remplacé par un tiret.

Sortie :

Tous les espaces de la chaîne sont remplacés par des tirets.

Remplacer un retour à la ligne

Les caractères spéciaux tels que \n peuvent également être remplacés. Dans l'exemple suivant, les retours à la ligne sont transformés en espaces.

Sortie :

Les caractères de retour à la ligne \n ont été remplacés par des espaces.

10. Sensibilité à la casse de replace()

La méthode replace() est sensible à la casse. Les chaînes Python, python et PYTHON sont donc considérées comme différentes.

Dans l'exemple suivant, nous demandons uniquement le remplacement de la chaîne Python avec une majuscule initiale.

Sortie :

Seules les occurrences correspondant exactement à Python sont remplacées. Les variantes python et PYTHON restent inchangées.

Lorsque les différentes écritures sont connues à l'avance, plusieurs appels successifs à replace() peuvent être utilisés pour les remplacer.

Sortie :

Chaque variante est traitée séparément. Pour des remplacements plus complexes indépendants de la casse, le module re et les expressions régulières offrent des possibilités supplémentaires.

11. Effectuer plusieurs remplacements successifs

Il est possible d'enchaîner plusieurs appels à replace(). Chaque appel produit une nouvelle chaîne sur laquelle le remplacement suivant peut être effectué.

Dans l'exemple suivant, plusieurs langages sont remplacés successivement.

Sortie :

Chaque instruction travaille sur le résultat produit par l'instruction précédente.

Enchaîner directement plusieurs replace()

Comme chaque appel à replace() retourne une chaîne, il est également possible d'enchaîner directement plusieurs méthodes sur la même expression.

Sortie :

Cette écriture est compacte et pratique lorsqu'un petit nombre de remplacements simples doit être effectué.

12. Exemples pratiques avec replace()

Nettoyer un numéro de téléphone

La méthode replace() peut servir à nettoyer des données saisies par un utilisateur. Dans l'exemple suivant, nous supprimons les espaces présents dans un numéro de téléphone.

Sortie :

Chaque espace est remplacé par une chaîne vide, ce qui permet d'obtenir le numéro sans séparateurs.

Transformer un titre en chaîne avec des tirets

On peut combiner lower() et replace() pour convertir un titre simple en une chaîne en minuscules dont les mots sont séparés par des tirets.

Sortie :

lower() transforme d'abord les lettres en minuscules, puis replace() remplace les espaces par des tirets.

Masquer une partie d'un texte

La méthode replace() peut également remplacer une information par une chaîne servant de masque lorsque la valeur exacte à masquer est connue.

Sortie :

La valeur recherchée est remplacée par des étoiles dans la nouvelle chaîne.

Modifier un séparateur dans des données

Lorsqu'une chaîne contient des données séparées par un caractère donné, replace() permet de remplacer rapidement ce séparateur par un autre.

Sortie :

Les points-virgules sont remplacés par des virgules sans modifier les autres caractères.

Remplacer une extension de fichier

Pour un nom de fichier simple dont on connaît précisément l'extension, replace() peut servir à remplacer cette extension. Dans l'exemple suivant, .txt est remplacé par .csv.

Sortie :

La chaîne .txt est remplacée par .csv. Pour des traitements généraux sur les chemins et les extensions de fichiers, des outils spécialisés comme pathlib sont toutefois plus adaptés.

13. À retenir !

  • La méthode replace() permet de remplacer une sous-chaîne par une autre dans une chaîne de caractères.
  • Sa syntaxe principale est chaine.replace(ancienne, nouvelle).
  • Par défaut, replace() remplace toutes les occurrences trouvées.
  • Le troisième argument de replace() permet de limiter le nombre de remplacements.
  • La méthode peut remplacer un mot, une expression, un caractère ou une séquence de caractères.
  • Pour supprimer du texte, il suffit de le remplacer par une chaîne vide "".
  • replace() est sensible à la casse.
  • Les chaînes Python étant immuables, replace() ne modifie pas directement la chaîne originale.
  • La méthode retourne une nouvelle chaîne contenant les remplacements.
  • Il est possible d'enchaîner plusieurs appels à replace() pour effectuer plusieurs transformations successives.
  • replace() est particulièrement utile pour le nettoyage, la normalisation et la transformation simple de données textuelles.

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *