1. À propos de lower() et casefold() en Python
Python propose plusieurs méthodes permettant de modifier ou de normaliser la casse des chaînes de caractères. Parmi elles, les méthodes lower() et casefold() permettent de convertir du texte afin d'obtenir une représentation en minuscules.
La méthode lower() est principalement utilisée lorsqu'on souhaite simplement convertir les lettres majuscules d'une chaîne en lettres minuscules. Elle convient à la plupart des traitements courants.
La méthode casefold() effectue une normalisation plus poussée de la casse. Elle est particulièrement intéressante lorsqu'on souhaite comparer des chaînes de caractères de manière indépendante de la casse, notamment avec certains caractères Unicode.
Le programme suivant présente une première utilisation des deux méthodes sur une chaîne simple.
1 2 3 | texte = "APPRENDRE PYTHON" print(texte.lower()) print(texte.casefold()) |
Sortie :
1 2 | apprendre python apprendre python |
Dans cet exemple, les deux méthodes produisent exactement le même résultat. Pour les caractères courants de l'alphabet latin, lower() et casefold() donnent très souvent des résultats identiques.
2. Convertir une chaîne en minuscules avec lower()
Syntaxe de la méthode lower()
La méthode lower() s'applique directement à une chaîne de caractères et ne nécessite aucun argument. Sa syntaxe générale est la suivante :
1 | chaine.lower() |
Sortie :
1 | Une nouvelle chaîne contenant les caractères convertis en minuscules. |
Comme les chaînes de caractères sont immuables en Python, la méthode lower() ne modifie pas directement la chaîne originale. Elle retourne une nouvelle chaîne.
Utilisation de lower()
Dans l'exemple suivant, la méthode lower() convertit toutes les lettres majuscules de la chaîne en minuscules. Les caractères déjà en minuscules restent inchangés.
1 2 3 | texte = "Python EST Facile" resultat = texte.lower() print(resultat) |
Sortie :
1 | python est facile |
La chaîne originale n'est pas modifiée
Il est possible de conserver simultanément la chaîne originale et sa version en minuscules en stockant le résultat de lower() dans une autre variable.
1 2 3 4 | texte = "APPRENDRE Python" minuscules = texte.lower() print("Original :", texte) print("Minuscules :", minuscules) |
Sortie :
1 2 | Original : APPRENDRE Python Minuscules : apprendre python |
La variable texte conserve donc sa valeur initiale tandis que la variable minuscules contient la nouvelle chaîne.
Chiffres et caractères spéciaux
Les chiffres, les espaces et les signes de ponctuation ne possèdent pas de casse. Ils ne sont donc pas modifiés par la méthode lower().
1 2 | texte = "PYTHON 3 : FACILE !" print(texte.lower()) |
Sortie :
1 | python 3 : facile ! |
3. Convertir une chaîne avec casefold()
Syntaxe de casefold()
La méthode casefold() possède une syntaxe similaire à celle de lower(). Elle s'applique directement à une chaîne et ne prend aucun argument.
1 | chaine.casefold() |
Sortie :
1 | Une nouvelle chaîne normalisée pour ignorer les différences de casse. |
Cette méthode est plus agressive que lower() dans la normalisation de certains caractères Unicode. Son objectif principal est de faciliter les comparaisons de chaînes indépendamment de la casse.
Utilisation simple de casefold()
Avec des caractères latins courants, la méthode casefold() produit généralement le même résultat que lower().
1 2 3 | texte = "PROGRAMMATION Python" resultat = texte.casefold() print(resultat) |
Sortie :
1 | programmation python |
casefold() et les caractères Unicode
La différence entre lower() et casefold() apparaît avec certains caractères particuliers. Par exemple, le caractère allemand ß reste inchangé avec lower(), tandis que casefold() le transforme en ss.
1 2 3 | texte = "Straße" print("lower() :", texte.lower()) print("casefold() :", texte.casefold()) |
Sortie :
1 2 | lower() : straße casefold() : strasse |
Cet exemple montre que casefold() ne se contente pas toujours de transformer visuellement les majuscules en minuscules. Elle effectue une normalisation destinée à faciliter les comparaisons de texte.
4. Différence entre lower() et casefold()
La méthode lower() est principalement destinée à obtenir une version en minuscules d'une chaîne. La méthode casefold(), quant à elle, est destinée à effectuer une normalisation plus forte de la casse afin de faciliter la comparaison de chaînes.
Pour du texte français ou anglais classique, la différence entre les deux méthodes est rarement visible. Dans l'exemple suivant, elles produisent exactement le même résultat.
1 2 3 | texte = "APPRENDRE PYTHON" print(texte.lower()) print(texte.casefold()) |
Sortie :
1 2 | apprendre python apprendre python |
En revanche, avec certains caractères Unicode, les résultats peuvent être différents. L'exemple suivant permet de comparer directement les deux méthodes.
1 2 3 | mot = "STRAẞE" print("Avec lower() :", mot.lower()) print("Avec casefold() :", mot.casefold()) |
Sortie :
1 2 | Avec lower() : straße Avec casefold() : strasse |
On peut donc retenir que lower() convient parfaitement lorsqu'on souhaite simplement afficher ou manipuler du texte en minuscules, tandis que casefold() est généralement plus adaptée lorsqu'on souhaite comparer des chaînes sans tenir compte de la casse.
5. Comparer des chaînes sans tenir compte de la casse
Comparer des chaînes avec lower()
Une utilisation fréquente de lower() consiste à convertir deux chaînes en minuscules avant de les comparer. Cela permet par exemple de considérer les chaînes "Python" et "PYTHON" comme équivalentes.
1 2 3 4 5 6 | mot1 = "Python" mot2 = "PYTHON" if mot1.lower() == mot2.lower(): print("Les deux chaînes sont identiques.") else: print("Les deux chaînes sont différentes.") |
Sortie :
1 | Les deux chaînes sont identiques. |
Comparer des chaînes avec casefold()
Pour une comparaison indépendante de la casse plus robuste, il est préférable d'utiliser casefold(). Cette méthode prend mieux en compte certains caractères Unicode particuliers.
1 2 3 4 5 6 | mot1 = "Straße" mot2 = "STRASSE" if mot1.casefold() == mot2.casefold(): print("Les deux chaînes sont équivalentes.") else: print("Les deux chaînes sont différentes.") |
Sortie :
1 | Les deux chaînes sont équivalentes. |
Dans cet exemple, casefold() normalise les deux chaînes de manière à permettre leur comparaison malgré la présence du caractère allemand ß.
Traiter une réponse saisie par l'utilisateur
La méthode casefold() peut également être appliquée à une chaîne obtenue avec input(). Le programme peut ainsi accepter différentes écritures d'une même réponse sans imposer à l'utilisateur une casse particulière.
1 2 3 4 5 | reponse = input("Voulez-vous continuer ? ") if reponse.casefold() == "oui": print("Vous avez choisi de continuer.") else: print("Vous avez choisi une autre réponse.") |
Exemple de sortie :
1 2 | Voulez-vous continuer ? OUI Vous avez choisi de continuer. |
Les réponses "oui", "Oui", "OUI" ou encore "oUi" sont ainsi traitées de la même manière.
6. À retenir !
Les méthodes lower() et casefold() permettent toutes les deux de travailler avec des chaînes indépendamment des différences entre majuscules et minuscules.
La méthode lower() est principalement utilisée pour convertir les caractères d'une chaîne en minuscules. Elle est parfaitement adaptée aux traitements classiques et à la présentation du texte.
La méthode casefold() effectue une normalisation plus poussée. Elle est particulièrement recommandée pour effectuer des comparaisons de chaînes indépendantes de la casse, car elle prend en compte certaines particularités des caractères Unicode.
Dans les deux cas, la chaîne originale n'est pas modifiée. Les méthodes retournent une nouvelle chaîne de caractères, car les chaînes Python sont immuables.
Mots clés
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/


