Ограничение входных строк Python на определенные символы и длины
Я только начал изучать свой первый настоящий язык программирования Python. Я хотел бы знать, как ограничить ввод пользователя в raw_input
определенными символами и определенной длиной. Например, я хотел бы показать сообщение об ошибке, если пользователь вводит строку, содержащую что-либо, кроме букв a-z
, и я хотел бы показать ее, если пользователь вводит более 15 символов.
Первое похоже на то, что я мог бы делать с регулярными выражениями, о которых я немного знаю, потому что использовал их в Javascript, но я не уверен, как их использовать в Python. Второй, я не уверен, как подойти к нему. Может ли кто-нибудь помочь?
Ответы
Ответ 1
Вопрос 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()
Вопрос 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
Ответ 2
Regexes также может ограничить количество символов.
r = re.compile("^[a-z]{1,15}$")
дает вам регулярное выражение, которое будет соответствовать только в том случае, если входные данные имеют строчные буквы ASCII и длиной от 1 до 15 символов.
Ответ 3
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"