1. À propos de endswith() en Python
En Python, la méthode endswith() permet de vérifier si une chaîne de caractères se termine par un suffixe donné. Elle retourne une valeur booléenne : True lorsque la fin de la chaîne correspond au suffixe recherché et False dans le cas contraire.
Dans l'exemple suivant, le nom du fichier se termine bien par ".pdf". La méthode endswith() retourne donc True.
1 2 3 | fichier = "cours_python.pdf" resultat = fichier.endswith(".pdf") print(resultat) |
Sortie :
1 | True |
Si le suffixe recherché ne correspond pas à la fin de la chaîne, endswith() retourne False.
1 2 3 | fichier = "cours_python.pdf" resultat = fichier.endswith(".txt") print(resultat) |
Sortie :
1 | False |
La méthode endswith() est sensible à la casse. Par conséquent, ".PDF" et ".pdf" sont considérés comme deux suffixes différents.
1 2 3 | fichier = "cours_python.PDF" print(fichier.endswith(".PDF")) print(fichier.endswith(".pdf")) |
Sortie :
1 2 | True False |
2. Tester la fin d'une chaîne avec endswith()
Le suffixe transmis à endswith() peut être constitué d'un seul caractère ou de plusieurs caractères. Toute la séquence doit correspondre exactement à la fin de la chaîne.
Dans l'exemple suivant, le programme vérifie si le mot "Python" se termine par la lettre "n".
1 2 3 | mot = "Python" resultat = mot.endswith("n") print(resultat) |
Sortie :
1 | True |
Il est également possible de rechercher un suffixe contenant plusieurs caractères.
1 2 3 | texte = "Programmation Python" print(texte.endswith("Python")) print(texte.endswith("Java")) |
Sortie :
1 2 | True False |
Les espaces placés à la fin d'une chaîne sont pris en compte. Une chaîne terminée par des espaces ne se termine donc pas directement par le mot qui les précède.
1 2 3 | texte = "Python " print(texte.endswith("Python")) print(texte.endswith(" ")) |
Sortie :
1 2 | False True |
Lorsque les espaces situés à droite ne sont pas significatifs, la méthode rstrip() peut être utilisée avant endswith().
1 2 3 | texte = "Python " resultat = texte.rstrip().endswith("Python") print(resultat) |
Sortie :
1 | True |
3. Tester plusieurs suffixes avec endswith()
La méthode endswith() peut recevoir un tuple de suffixes. Elle retourne True si la chaîne se termine par au moins l'un des suffixes contenus dans ce tuple.
Dans l'exemple suivant, le programme vérifie si un fichier possède l'une des extensions d'image indiquées.
1 2 3 | fichier = "photo.jpg" resultat = fichier.endswith((".jpg", ".jpeg", ".png")) print(resultat) |
Sortie :
1 | True |
Si aucun des suffixes proposés ne correspond à la fin de la chaîne, endswith() retourne False.
1 2 3 | fichier = "document.pdf" resultat = fichier.endswith((".jpg", ".jpeg", ".png")) print(resultat) |
Sortie :
1 | False |
L'utilisation d'un tuple permet d'éviter plusieurs appels successifs à endswith() reliés par l'opérateur or.
1 2 3 | fichier = "programme.py" resultat = fichier.endswith((".py", ".js", ".php")) print(resultat) |
Sortie :
1 | True |
Le test reste sensible à la casse, y compris lorsqu'un tuple de suffixes est utilisé. On peut normaliser la chaîne avec lower() ou casefold() lorsque la casse doit être ignorée.
1 2 3 | fichier = "PHOTO.JPG" resultat = fichier.casefold().endswith((".jpg", ".jpeg", ".png")) print(resultat) |
Sortie :
1 | True |
4. Limiter le test avec les paramètres start et end
La méthode endswith() accepte deux paramètres optionnels : start et end. Ils permettent de vérifier la fin d'une portion déterminée de la chaîne plutôt que la fin de la chaîne complète.
Dans l'exemple suivant, le test est effectué sur la portion de la chaîne commençant à l'indice 7. Cette portion correspond à "Python".
1 2 3 | texte = "Cours: Python" resultat = texte.endswith("Python", 7) print(resultat) |
Sortie :
1 | True |
Le paramètre end permet de fixer la limite de fin de la portion à tester. Comme avec le slicing, l'indice end est exclu. Dans la chaîne suivante, la portion comprise entre les indices 0 et 5 inclus correspond à "Python".
1 2 3 | texte = "Python facile" print(texte.endswith("Python", 0, 6)) print(texte.endswith("Pytho", 0, 6)) |
Sortie :
1 2 | True False |
Le premier test est vrai car la portion texte[0:6] est "Python" et se termine donc par "Python". Le second est faux car cette même portion ne se termine pas par "Pytho".
Les paramètres start et end permettent ainsi de réaliser le test sur une sous-chaîne sans avoir besoin de créer explicitement cette sous-chaîne avec le slicing.
1 2 3 | texte = "Python-Java-PHP" print(texte.endswith("Java", 0, 11)) print(texte.endswith("PHP", 0, 11)) |
Sortie :
1 2 | True False |
En effet, texte[0:11] correspond à "Python-Java". Cette portion se termine par "Java".
5. Exemples pratiques avec endswith()
Vérifier l'extension d'un fichier
L'une des utilisations les plus courantes de endswith() consiste à vérifier rapidement si un nom de fichier se termine par une extension donnée.
1 2 3 4 5 | fichier = "cours_python.pdf" if fichier.endswith(".pdf"): print("Fichier PDF") else: print("Autre type de fichier") |
Sortie :
1 | Fichier PDF |
Filtrer plusieurs types de fichiers
Un tuple de suffixes permet de filtrer facilement une liste de fichiers. Dans l'exemple suivant, seuls les fichiers dont le nom se termine par une extension d'image sont affichés.
1 2 3 4 5 | fichiers = ["photo.jpg", "cours.pdf", "logo.png", "notes.txt", "image.jpeg"] extensions = (".jpg", ".jpeg", ".png") for fichier in fichiers: if fichier.endswith(extensions): print(fichier) |
Sortie :
1 2 3 | photo.jpg logo.png image.jpeg |
Tester la ponctuation à la fin d'une phrase
endswith() peut également servir à vérifier si une phrase se termine par un signe de ponctuation déterminé.
1 2 3 4 5 | phrase = "Python est-il facile ?" if phrase.endswith("?"): print("La phrase est une question") else: print("La phrase n'est pas une question") |
Sortie :
1 | La phrase est une question |
Accepter plusieurs signes de ponctuation
Un tuple peut être utilisé pour vérifier si une phrase se termine par l'un de plusieurs signes de ponctuation.
1 2 3 4 5 | phrase = "Apprendre Python !" if phrase.endswith((".", "!", "?")): print("La phrase se termine par un signe de ponctuation") else: print("Ponctuation finale absente") |
Sortie :
1 | La phrase se termine par un signe de ponctuation |
Vérifier la fin d'une adresse Web
La méthode endswith() peut être utilisée pour effectuer un contrôle simple sur la fin d'une adresse représentée sous forme de chaîne.
1 2 3 | adresse = "https://www.tresfacile.net" if adresse.endswith(".net"): print("L'adresse se termine par .net") |
Sortie :
1 | L'adresse se termine par .net |
Comparer endswith() avec le slicing
Il est possible d'effectuer un test similaire avec le slicing, mais endswith() exprime directement l'intention de vérifier un suffixe et évite de calculer manuellement sa longueur.
1 2 3 4 | fichier = "document.pdf" suffixe = ".pdf" print(fichier[-len(suffixe):] == suffixe) print(fichier.endswith(suffixe)) |
Sortie :
1 2 | True True |
6. À retenir !
La méthode endswith() permet de vérifier efficacement si une chaîne de caractères se termine par un suffixe donné. Elle retourne un booléen et peut donc être utilisée directement dans les conditions.
- endswith() retourne True si la chaîne se termine par le suffixe recherché.
- Elle retourne False lorsque le suffixe ne correspond pas à la fin de la chaîne.
- La comparaison effectuée par endswith() est sensible à la casse.
- Le suffixe peut contenir un ou plusieurs caractères.
- Un tuple permet de tester plusieurs suffixes en un seul appel.
- Les paramètres optionnels start et end permettent de limiter le test à une portion de la chaîne.
- Les espaces placés à la fin de la chaîne sont pris en compte.
- rstrip() peut être utilisée avant endswith() lorsque les espaces finaux doivent être ignorés.
- casefold() ou lower() peut être utilisée lorsque le test doit ignorer la casse.
- endswith() est particulièrement pratique pour filtrer des noms de fichiers selon leur extension.
Le programme suivant résume plusieurs utilisations courantes de endswith().
1 2 3 4 5 | fichier = "cours_python.pdf" print(fichier.endswith(".pdf")) print(fichier.endswith(".txt")) print(fichier.endswith((".txt", ".pdf"))) print(fichier.endswith("python.pdf")) |
Sortie :
1 2 3 4 | True False True True |
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/



