Autoriser Uniquement les Caractères Alpha en Python?
Je suis en train d'écrire un programme, d'une partie de celui-ci exige la saisie d'un nom.
Le nom ne peut être l'alpha et l'espace (par exemple. John Smith), il ne peut pas être John Smith1
Si un caractère non valide EST entré, j'ai besoin de ce programme pour afficher un message d'erreur et reask les questions. J'ai tout, mais la validation. J'imagine qu'il va quelque chose comme ceci?
name = str(input("What is the customers name? "))
while True:
if ??????????????????? :
print("You have entered an invalid character. Enter only name."
name = str(input("What is the customers name? "))
else:
break
Quelqu'un peut s'il vous plaît remplir le ?????
s pour faire le programme de travail?
- Tim O'Reilly ne va pas être content s'il essaie d'utiliser votre programme. Ni 毛澤東.
- Je pense que ce serait une question pour l'enseignant qui a proposé l'affectation.
- Je voudrais utiliser une boucle while sur le si construire dans l'exemple de code.
- Il n'a besoin d'être simple. Il n'a pas besoin d'avoir un quelconque de ces fonctions. L'enseignant ne connaît pas la réponse.
Vous devez vous connecter pour publier un commentaire.
Essayer le
isalpha()
méthode de chaînes.Car la personne va entrer les noms avec des espaces, vous avez deux options:
split()
)string.letters
Par exemple:
Combiner cela avec un
' '
pour obtenir votre liste de caractères autorisés. Puisque c'est les devoirs, le reste est à vous.split()
vous pouvez utiliserreplace(" ", "")
. Ainsi, au lieu de "?????" dans l'OP exemple, vous devez mettrenot the_name.replace(" ", "").isalpha()
qui estTrue
si le nom, sans espaces, a quelques pas des caractères alphabétiques.Vous pouvez utiliser le
replace
méthode des cordes pour se débarrasser de blanche-espaces et ensuite utiliser leisalpha()
méthode.Un exemple:
Noter que cela fonctionne aussi avec les non ascii des lettres en python3:
Les expressions régulières sont trop compliquées pour que cette tâche simple.
Aussi parce que l'utilisation de
[A-Za-z ]+
ou similaire l'habitude de comparer les noms avec des lettres non ASCII.Et à l'aide de
\w
inclut des chiffres.Si vous ne voulez pas correspondre à des caractères non-ASCII(comme le 'è'), alors vous pouvez essayer quelque chose comme ceci:
Enfin, une autre façon de faire est celle-ci:
Et vous pouvez l'utiliser de cette façon:
Vous voudrez peut-être regarder dans les expressions régulières:
est une expression régulière qui correspond uniquement aux chaînes si elles sont entièrement constituées de lettres ASCII et des espaces.
De permettre aux lettres de vos paramètres régionaux en cours:
qui est essentiellement un ensemble de caractères alphanumériques, y compris les caractères accentués (dans les paramètres régionaux en cours), moins les chiffres et le trait de soulignement.
Utiliser des Expressions Régulières, quelque chose comme
[A-Za-z ]+
Il pourrait se traduire par quelque chose comme cela, si j'utilise Tim expression:
Pour Vérifier la chaîne alpha j'utilise généralement celui-ci. J'espère que cela peut vous aider.