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

kid*_*osu 14 python string user-input limit

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

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

Nik*_* B. 15

问题1:限制某些字符

你说得对,用正则表达式很容易解决:

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()
Run Code Online (Sandbox Code Playgroud)

问题2:限制到一定的长度

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

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

或两者兼而有之:

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
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 13

正则表达式还可以限制字符数.

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

为您提供一个正则表达式,只有在输入完全是小写ASCII字母且长度为1到15个字符时才匹配.