如何匹配python中的字符串与条件循环

时间:2014-09-30 20:37:38

标签: python regex python-2.7 raw-input

我是python的初学者。我想要求用户输入他的名字。名称应该只包含字母A-Z,如果没有,我想显示错误并请求用户再次输入名称,直到名称正确。这是我正在尝试的代码。但是,即使字符串包含数字和特殊字符,也不会检查该字符串。我哪里错了?

def get_first_name():
try_again = True
while(try_again==True):
    first_name = raw_input("Please enter your first name.")
    if (re.match("^[A-Za-z]+$", first_name)==False):
        try_again = True
    else:
        try_again = False
        return first_name

2 个答案:

答案 0 :(得分:2)

您不需要re,只需使用str.isalpha

def get_first_name():  
     while True:
        first_name = raw_input("Please enter your first name.")
        if not first_name.isalpha(): # if not all letters, ask for input again
            print "Invalid entry"
            continue
        else: # else all is good, return first_name
            return first_name
In [12]: "foo".isalpha()
Out[12]: True

In [13]: "foo1".isalpha()
Out[13]: False

答案 1 :(得分:0)

 if (re.match("^[A-Za-z]+$", first_name)==False):

当没有匹配时,re.match返回None。没有不等于假。你可以这样写:

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