Python验证A-Z或a-z

时间:2014-12-21 17:37:41

标签: python validation

我正在尝试创建一个演示程序,用于检查用户输入的用户名并验证它是否包含来自A-Z或a-z的字母。

user_boolean = False

while user_boolean == False:
    username = input("What is your name?")

    if [username contains letters] == False:
        username_reattempt = input("Your name contains numbers or unpermitted characters. Please type your name correctly. >> ")
        if username_reattempt[contains letters] == True:
            user_boolean == True
    else:
        user_boolean == True

现在,您可以看到user_boolean设置为false,而当它为false时,此while循环将继续运行。如果用户名包含不是A-Z或a-z的字符,那么它将要求用户重新键入其详细信息。如果他们第二次尝试成功,他们将退出while循环,程序将继续进入主要部分。

现在,我已经研究了不同的方法来做到这一点,到目前为止我还没有找到一个方法...之前,我找到了.isdigit()方法,但这是整数,而不是字符串。

有办法吗?

1 个答案:

答案 0 :(得分:1)

由于您不熟悉正则表达式,因此这是一个非常简单的选择:

如果您想仅将某些字符列入白名单(可能允许不仅仅是字母的字符),那么您可能希望使用一组:

def containsOnly(s, whitelist):
    whitelist = set(whitelist)
    for char in s:
        if char not in whitelist:
            return False
    return True

此功能可用于您的目的,如下所示:

In [7]: containsOnly('asdfA5', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Out[7]: False

In [8]: containsOnly('asdfA', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Out[8]: True

In [9]: containsOnly('asdfA5', '5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Out[9]: True