如何输入只接受a-z等

时间:2015-06-23 05:46:47

标签: python python-3.4

我无法接受输入以仅接受a-z和A-Z字母。这就是我想出来的

        while(not(studentName == "END")):
    studentName = input("What is the name of the student (END to finish) ")
    if not re.match("^[a-z]*$", studentName):
        print("Only letters are allowed")
    elif len(studentName) == 0:
        print("Insufficient characters. Please try again.")
    else:
        studentsNames.append(studentname)

然而,我只是想出了一个错误"未定义"。 我该怎么做:C

4 个答案:

答案 0 :(得分:3)

我喜欢使用内置的字符串方法,而不是使用正则表达式。其中一个是str.isalpha(),当在字符串上调用时,如果字符串仅包含 True,则返回A-z。所以而不是:

if not re.match("^[a-z]*$", studentName):
    print("Only letters are allowed")

我只想写:

if not studentName.isalpha():
    print("Only letters are allowed!")

答案 1 :(得分:0)

您需要导入re模块,您必须将正则表达式更改为

if not re.match(r"^[A-Za-z]+$", studentName):

只需在python脚本的顶部输入以下代码即可。

import re

您的正则表达式"^[a-z]*$"将匹配零个或多个小写字母。也就是说,它也匹配空字符串,它不会匹配字符串只有大写字母,如FOO

因此,对于所有不能为空字符串的字符串或仅包含小写字母的字符串,此if not re.match("^[a-z]*$", studentName):将返回true

答案 2 :(得分:0)

您可以使用setstring.ascii_letters

from string import ascii_letters

def is_all_characters(student_name):
    return set(student_name) in set(ascii_letters)

答案 3 :(得分:0)

isalpha() 可满足此要求。

username = input("Enter Username: ")
if username.isalpha() is False:
 print("Only Text allowed in Username")
else:
 print("Welcome "+username)