将Python输入字符串限制为某些字符和长度

时间:2012-01-06 17:21:56

标签: python string limit user-input

我刚刚开始学习我的第一个真正的编程语言Python。我想知道如何将raw_input中的用户输入限制为某些字符和一定长度。例如,如果用户输入的字符串包含除字母a-z之外的任何内容,我想显示错误消息,如果用户输入超过15个字符,我想显示一个。

第一个似乎是我可以用正则表达式做的事情,我知道一点,因为我在Javascript中使用它们,但我不确定如何在Python中使用它们。第二个,我不知道如何处理它。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:15)

问题1:限制为某些字符

你是对的,用regular expressions很容易解决:

import re

input_str = raw_input("Please provide some info: ")
if not re.match("^[a-z]*$", input_str):
    print "Error! Only letters a-z allowed!"
    sys.exit()

问题2:限制到一定长度

正如蒂姆提到的那样,你可以通过调整第一个例子中的正则表达式来只允许一定数量的字母来做到这一点。你也可以像这样手动检查长度:

input_str = raw_input("Please provide some info: ")
if len(input_str) > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit()

或两者兼而有之:

import re

input_str = raw_input("Please provide some info: ")
if not re.match("^[a-z]*$", input_str):
    print "Error! Only letters a-z allowed!"
    sys.exit()
elif len(input_str) > 15:
    print "Error! Only 15 characters allowed!"
    sys.exit()

print "Your input was:", input_str

答案 1 :(得分:13)

正则表达式也可以限制字符数。

r = re.compile("^[a-z]{1,15}$")

为您提供一个正则表达式,仅当输入为完全小写的ASCII字母且长度为1到15个字符时才匹配。

答案 2 :(得分:1)

我们可以在此处使用assert

def _input(inp_str:str):
    try:
        assert len(inp_str)<=15,print('More than 15 characters present')
        assert all('a'<=i<='z' for i in inp_str),print('Characters other than "a"-"z" are found')
        return inp_str
    except Exception as e:
        pass

_input('abcd')
#abcd
_input('abc d')
#Characters other than "a"-"z" are found
_input('abcdefghijklmnopqrst')
#More than 15 characters present

答案 3 :(得分:0)

if any( [ i>'z' or i<'a' for i in raw_input]):
    print "Error: Contains illegal characters"
elif len(raw_input)>15:
    print "Very long string"