Подтвердить что ты не робот

Ограничение входных строк Python на определенные символы и длины

Я только начал изучать свой первый настоящий язык программирования Python. Я хотел бы знать, как ограничить ввод пользователя в raw_input определенными символами и определенной длиной. Например, я хотел бы показать сообщение об ошибке, если пользователь вводит строку, содержащую что-либо, кроме букв a-z, и я хотел бы показать ее, если пользователь вводит более 15 символов.

Первое похоже на то, что я мог бы делать с регулярными выражениями, о которых я немного знаю, потому что использовал их в Javascript, но я не уверен, как их использовать в Python. Второй, я не уверен, как подойти к нему. Может ли кто-нибудь помочь?

4b9b3361

Ответ 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"