Ограничение входных строк Python определенными символами и длинами - PullRequest
14 голосов
/ 06 января 2012

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

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

Ответы [ 3 ]

15 голосов
/ 06 января 2012

Вопрос 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
13 голосов
/ 06 января 2012

Регулярные выражения также могут ограничивать количество символов.

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

дает регулярное выражение, которое соответствует только в том случае, если ввод состоит из строчных букв ASCII и длиной от 1 до 15 символов.

0 голосов
/ 06 января 2012
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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...