- À propos de removeprefix() et removesuffix() en Python
- Supprimer un préfixe avec removeprefix()
- Supprimer un suffixe avec removesuffix()
- Comprendre le comportement lorsque le préfixe ou le suffixe est absent
- Différence entre removeprefix(), removesuffix(), lstrip() et rstrip()
- Exemples pratiques avec removeprefix() et removesuffix()
- À retenir !
1. À propos de removeprefix() et removesuffix() en Python
Les chaînes de caractères Python disposent de nombreuses méthodes permettant de rechercher, remplacer, découper ou supprimer certaines parties d'un texte. Parmi elles, removeprefix() et removesuffix() permettent respectivement de supprimer un préfixe placé au début d'une chaîne et un suffixe placé à sa fin.
Ces deux méthodes sont disponibles à partir de Python 3.9. Elles rendent plus simples et plus lisibles certaines opérations qui nécessitaient auparavant l'utilisation de tests avec startswith(), endswith() ou de découpages de chaînes.
La méthode removeprefix() possède la syntaxe suivante :
1 | chaine.removeprefix(prefix) |
Sortie :
1 | Une nouvelle chaîne sans le préfixe indiqué si celui-ci est présent au début. |
De la même manière, la méthode removesuffix() utilise la syntaxe suivante :
1 | chaine.removesuffix(suffix) |
Sortie :
1 | Une nouvelle chaîne sans le suffixe indiqué si celui-ci est présent à la fin. |
Comme toutes les chaînes Python sont immuables, ces méthodes ne modifient pas directement la chaîne d'origine. Elles retournent une nouvelle chaîne.
2. Supprimer un préfixe avec removeprefix()
La méthode removeprefix() supprime une chaîne déterminée uniquement lorsqu'elle apparaît exactement au début de la chaîne principale.
Dans l'exemple suivant, le préfixe "Python-" est supprimé de la chaîne.
1 2 3 4 5 | texte = "Python-Tutoriel" resultat = texte.removeprefix("Python-") print(resultat) |
Sortie :
1 | Tutoriel |
La méthode supprime l'ensemble du préfixe demandé. Celui-ci peut contenir plusieurs caractères, des espaces ou des symboles.
Par exemple, nous pouvons supprimer le préfixe "Cours : " d'un titre.
1 2 3 4 5 | titre = "Cours : Les chaînes de caractères" titre = titre.removeprefix("Cours : ") print(titre) |
Sortie :
1 | Les chaînes de caractères |
La comparaison est sensible à la casse. Ainsi, "python" et "Python" sont considérés comme deux chaînes différentes.
1 2 3 4 | texte = "Python facile" print(texte.removeprefix("Python")) print(texte.removeprefix("python")) |
Sortie :
1 2 | facile Python facile |
Dans le deuxième appel, rien n'est supprimé car le préfixe "python" ne correspond pas exactement à "Python".
3. Supprimer un suffixe avec removesuffix()
La méthode removesuffix() fonctionne selon le même principe que removeprefix(), mais elle agit sur la fin de la chaîne. Le suffixe est supprimé uniquement lorsqu'il correspond exactement aux derniers caractères.
L'exemple suivant permet de supprimer l'extension ".txt" d'un nom de fichier.
1 2 3 4 5 | fichier = "cours_python.txt" nom = fichier.removesuffix(".txt") print(nom) |
Sortie :
1 | cours_python |
La méthode est également pratique lorsqu'une chaîne se termine par un texte fixe que nous souhaitons supprimer.
1 2 3 4 5 | texte = "Bienvenue sur Très Facile !" resultat = texte.removesuffix(" !") print(resultat) |
Sortie :
1 | Bienvenue sur Très Facile |
Comme removeprefix(), removesuffix() effectue une comparaison sensible à la casse.
1 2 3 4 | fichier = "image.JPG" print(fichier.removesuffix(".JPG")) print(fichier.removesuffix(".jpg")) |
Sortie :
1 2 | image image.JPG |
Dans le deuxième cas, le suffixe n'est pas supprimé puisque ".jpg" et ".JPG" sont différents pour Python.
4. Comprendre le comportement lorsque le préfixe ou le suffixe est absent
Une caractéristique importante de removeprefix() et removesuffix() est leur comportement lorsque le texte demandé n'est pas présent. Dans ce cas, aucune erreur n'est produite : la chaîne est simplement retournée sans modification.
Dans l'exemple suivant, "Java-" n'est pas le préfixe de la chaîne. removeprefix() retourne donc la chaîne originale.
1 2 3 4 5 | texte = "Python-Tutoriel" resultat = texte.removeprefix("Java-") print(resultat) |
Sortie :
1 | Python-Tutoriel |
Le même principe s'applique à removesuffix(). Ici, le nom du fichier ne se termine pas par ".csv".
1 2 3 4 5 | fichier = "programme.py" resultat = fichier.removesuffix(".csv") print(resultat) |
Sortie :
1 | programme.py |
Il n'est donc généralement pas nécessaire de vérifier préalablement la présence du préfixe avec startswith() ou du suffixe avec endswith() lorsque le seul objectif est de les supprimer s'ils existent.
Par exemple, le code suivant supprime directement le préfixe sans effectuer de test préalable.
1 2 3 4 5 | adresse = "https://www.tresfacile.net" adresse = adresse.removeprefix("https://") print(adresse) |
Sortie :
1 | www.tresfacile.net |
5. Différence entre removeprefix(), removesuffix(), lstrip() et rstrip()
Il ne faut pas confondre removeprefix() avec lstrip(), ni removesuffix() avec rstrip(). Leur fonctionnement est différent.
removeprefix() considère son argument comme une chaîne complète devant correspondre exactement au début du texte.
1 2 3 | texte = "PythonPython" print(texte.removeprefix("Python")) |
Sortie :
1 | Python |
En revanche, lstrip() interprète son argument comme un ensemble de caractères à retirer successivement depuis le début de la chaîne. Il ne cherche pas une sous-chaîne complète.
1 2 3 | texte = "PythonPython" print(texte.lstrip("Python")) |
Sortie :
1 |
Dans cet exemple, lstrip() retire successivement tous les caractères initiaux appartenant à l'ensemble des caractères contenus dans "Python". Il ne faut donc pas l'utiliser comme remplacement de removeprefix().
La même différence existe entre removesuffix() et rstrip(). removesuffix() supprime exactement le suffixe demandé.
1 2 3 | fichier = "document.txt" print(fichier.removesuffix(".txt")) |
Sortie :
1 | document |
rstrip() ne recherche pas le suffixe ".txt" comme une unité complète. Il supprime à droite les caractères appartenant à l'ensemble fourni jusqu'à rencontrer un autre caractère.
1 2 3 | texte = "document.txt" print(texte.rstrip(".txt")) |
Sortie :
1 | documen |
Cette différence est essentielle : pour retirer un préfixe précis, utilisez removeprefix(), et pour retirer un suffixe précis, utilisez removesuffix().
6. Exemples pratiques avec removeprefix() et removesuffix()
Nettoyer une adresse Web
removeprefix() peut servir à supprimer un protocole placé au début d'une adresse Web. Dans cet exemple, nous retirons "https://" pour conserver uniquement le reste de l'adresse.
1 2 3 4 5 | url = "https://www.tresfacile.net" url = url.removeprefix("https://") print(url) |
Sortie :
1 | www.tresfacile.net |
Supprimer l'extension d'un nom de fichier
removesuffix() peut être utilisée lorsque nous connaissons exactement le suffixe à supprimer. L'exemple suivant retire l'extension ".csv".
1 2 3 4 5 | fichier = "etudiants.csv" nom = fichier.removesuffix(".csv") print(nom) |
Sortie :
1 | etudiants |
Nettoyer plusieurs chaînes
Les deux méthodes peuvent également être utilisées dans une boucle. Ici, nous supprimons le préfixe "Python-" de plusieurs titres.
1 2 3 4 5 6 7 8 9 | titres = [ "Python-Variables", "Python-Fonctions", "Python-Listes", "Python-Dictionnaires" ] for titre in titres: print(titre.removeprefix("Python-")) |
Sortie :
1 2 3 4 | Variables Fonctions Listes Dictionnaires |
Utiliser removeprefix() et removesuffix() ensemble
Les deux méthodes peuvent être enchaînées. Dans l'exemple suivant, nous supprimons d'abord un préfixe puis un suffixe afin de récupérer uniquement la partie centrale de la chaîne.
1 2 3 4 5 | texte = "cours_python.html" resultat = texte.removeprefix("cours_").removesuffix(".html") print(resultat) |
Sortie :
1 | python |
Cette écriture est particulièrement pratique pour nettoyer des chaînes possédant une structure connue.
7. À retenir !
Les méthodes removeprefix() et removesuffix() simplifient la suppression d'un texte précis placé respectivement au début ou à la fin d'une chaîne de caractères.
- removeprefix(prefix) supprime le préfixe uniquement s'il est présent au début de la chaîne.
- removesuffix(suffix) supprime le suffixe uniquement s'il est présent à la fin de la chaîne.
- Ces deux méthodes sont disponibles à partir de Python 3.9.
- Si le préfixe ou le suffixe demandé n'existe pas, la chaîne est retournée sans modification.
- Les comparaisons sont sensibles à la casse.
- Les chaînes Python étant immuables, ces méthodes retournent une nouvelle chaîne.
- removeprefix() ne doit pas être confondue avec lstrip().
- removesuffix() ne doit pas être confondue avec rstrip().
- lstrip() et rstrip() travaillent avec un ensemble de caractères, et non avec un préfixe ou un suffixe considéré comme une chaîne complète.
- Les deux méthodes peuvent être enchaînées pour supprimer simultanément un préfixe et un suffixe connus.
Le programme suivant résume le fonctionnement des deux méthodes.
1 2 3 4 5 6 7 8 9 10 | texte = "Python-Tutoriel.txt" sans_prefixe = texte.removeprefix("Python-") sans_suffixe = texte.removesuffix(".txt") nettoye = texte.removeprefix("Python-").removesuffix(".txt") print("Chaîne originale :", texte) print("Sans préfixe :", sans_prefixe) print("Sans suffixe :", sans_suffixe) print("Sans préfixe ni suffixe :", nettoye) |
Sortie :
1 2 3 4 | Chaîne originale : Python-Tutoriel.txt Sans préfixe : Tutoriel.txt Sans suffixe : Python-Tutoriel Sans préfixe ni suffixe : Tutoriel |
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/


