Tester une chaîne alphanumérique avec isalnum() en Python

1. À propos de isalnum() en Python

En Python, la méthode isalnum() permet de vérifier si une chaîne non vide contient uniquement des caractères alphanumériques, c'est-à-dire des caractères alphabétiques ou numériques reconnus par Python. Elle retourne True lorsque tous les caractères remplissent cette condition et False dans le cas contraire.

Dans l'exemple suivant, la chaîne contient uniquement des lettres et des chiffres. isalnum() retourne donc True.

Sortie :

Une chaîne composée uniquement de lettres est également alphanumérique au sens de isalnum(). Il n'est donc pas nécessaire qu'elle contienne simultanément des lettres et des chiffres.

Sortie :

De même, une chaîne composée uniquement de caractères numériques reconnus par Python peut retourner True.

Sortie :

En revanche, la présence d'un espace suffit pour que isalnum() retourne False.

Sortie :

2. Tester une chaîne avec isalnum()

La méthode isalnum() examine tous les caractères de la chaîne. Pour retourner True, la chaîne doit contenir au moins un caractère et chacun de ses caractères doit être alphabétique ou numérique.

Une chaîne contenant des lettres majuscules, des lettres minuscules et des chiffres satisfait cette condition.

Sortie :

La méthode ne demande pas obligatoirement un mélange de lettres et de chiffres. Une chaîne exclusivement alphabétique retourne également True.

Sortie :

Une chaîne constituée uniquement de chiffres retourne elle aussi True.

Sortie :

En revanche, la chaîne vide ne contient aucun caractère alphanumérique. isalnum() retourne donc False.

Sortie :

3. Comprendre les caractères acceptés et refusés par isalnum()

La méthode isalnum() repose sur les propriétés Unicode des caractères. Elle ne se limite donc pas aux lettres ASCII de A à Z et aux chiffres de 0 à 9.

Les lettres accentuées

Les lettres accentuées reconnues comme alphabétiques par Python sont acceptées par isalnum().

Sortie :

Les espaces

Un espace n'est ni une lettre ni un caractère numérique. Une chaîne contenant un espace retourne donc False.

Sortie :

Les caractères spéciaux

Les signes de ponctuation et les caractères tels que le tiret, le point ou le caractère de soulignement ne sont pas alphanumériques pour isalnum().

Sortie :

Les caractères numériques Unicode

isalnum() accepte aussi des caractères Unicode reconnus comme numériques. Par exemple, le caractère exposant "²" possède une propriété numérique reconnue par Python.

Sortie :

Les fractions Unicode

Comme isalnum() considère également les caractères reconnus par isnumeric(), certaines fractions Unicode sont acceptées. Le caractère "⅕" en est un exemple.

Sortie :

4. Utiliser isalnum() dans une condition

Comme isalnum() retourne un booléen, elle peut être utilisée directement dans une instruction if. Cela permet notamment d'effectuer des contrôles simples sur des identifiants ou d'autres données textuelles.

Dans l'exemple suivant, l'identifiant ne contient que des lettres et des chiffres. La condition est donc vraie.

Sortie :

Si l'identifiant contient un caractère de soulignement, isalnum() retourne False car "_" n'est pas un caractère alphanumérique.

Sortie :

Lorsque seuls les espaces placés au début et à la fin doivent être ignorés, strip() peut être appliquée avant isalnum().

Sortie :

Si les règles d'une application autorisent les espaces entre les mots, il est possible de les retirer avant le test. Cette transformation doit cependant correspondre aux règles de validation réellement souhaitées.

Sortie :

5. Exemples pratiques avec isalnum()

Valider un identifiant simple

isalnum() peut servir à vérifier qu'un identifiant simple contient uniquement des lettres et des caractères numériques, sans espace ni ponctuation.

Sortie :

Filtrer une liste de chaînes

La méthode isalnum() peut être utilisée dans une boucle pour conserver uniquement les chaînes entièrement alphanumériques.

Sortie :

Créer une liste de valeurs alphanumériques

Une compréhension de liste permet de créer directement une nouvelle liste contenant uniquement les chaînes pour lesquelles isalnum() retourne True.

Sortie :

Comparer isalnum(), isalpha() et isdigit()

isalnum() est plus générale que isalpha() et isdigit() : une chaîne peut être alphanumérique si elle contient des lettres, des caractères numériques ou un mélange des deux.

Sortie :

Détecter les caractères non alphanumériques

isalnum() peut être appliquée caractère par caractère pour repérer les caractères qui ne sont ni alphabétiques ni numériques.

Sortie :

Vérifier plusieurs valeurs

L'exemple suivant permet d'observer rapidement le comportement de isalnum() avec différents types de chaînes.

Sortie :

6. À retenir !

La méthode isalnum() permet de vérifier si une chaîne non vide contient exclusivement des caractères alphabétiques ou numériques reconnus par Python.

  • isalnum() retourne True si tous les caractères sont alphabétiques ou numériques et si la chaîne n'est pas vide.
  • Une chaîne composée uniquement de lettres peut retourner True.
  • Une chaîne composée uniquement de caractères numériques peut retourner True.
  • Une chaîne mélangeant lettres et chiffres peut également retourner True.
  • Il n'est donc pas nécessaire d'avoir simultanément au moins une lettre et au moins un chiffre.
  • Les espaces provoquent le retour de False.
  • Les signes de ponctuation provoquent le retour de False.
  • Le tiret et le caractère de soulignement "_" ne sont pas alphanumériques pour isalnum().
  • Une chaîne vide retourne False.
  • isalnum() prend en compte les propriétés Unicode des caractères alphabétiques et numériques.

Le programme suivant résume le comportement de isalnum() avec quelques chaînes représentatives.

Sortie :

 




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 *