10 votes

Comment vérifier qu'une chaîne ne contient que des caractères "a-z", "A-Z" et "0-9" ?

J'importe une chaîne de caractères et j'essaie de vérifier si le texte ne contient que des "a-z", "A-Z" et "0-9".

Mais je n'obtiens qu'une entrée et le succès ne s'imprime pas lorsque j'entre des lettres et des chiffres.

import string
text=input("Enter: ")
correct = string.ascii_letters + string.digits
if text in correct:
    print("Success")

0voto

Daweo Points 10024

Vous pouvez le faire de plusieurs manières différentes, je mettrais un harnais. set pour ce chemin de traverse :

import string
correct = {char for char in string.ascii_letters + string.digits}
def is_correct(text):
    return {char for char in text}.issubset(correct)
print(is_correct('letters123')) # True
print(is_correct('???')) # False
print(is_correct('\n')) # False

Je vérifie simplement si set constitué des caractères d'un texte donné est un sous-ensemble de set de tous les caractères légaux. Gardez à l'esprit que cette méthode traite toujours l'ensemble du texte, ce qui n'est pas le mieux du point de vue des performances (car vous risquez de terminer la vérification après avoir trouvé le premier caractère illégal), mais cela ne devrait pas poser de problème, sauf si vous devez traiter des textes très longs ou en très peu de temps.

-1voto

lokesh Points 115

Vous pouvez utiliser une correspondance regex pour vérifier si la chaîne ne contient que des lettres et des caractères alphabétiques.

 import re
 text = input("enter:")
 regex = r"([0-9a-zA-Z]+)"

 match = re.match(regex, string)

 if match != None:
    print("success")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X