Convertir une chaîne en minuscules avec lower() et casefold() en Python

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.

Sortie :

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 :

Sortie :

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.

Sortie :

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.

Sortie :

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().

Sortie :

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.

Sortie :

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().

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Exemple de sortie :

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/


Leave a Reply

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