web-dev-qa-db-ja.com

Python入力文字列を特定の文字と長さに制限する

私は最初の本当のプログラミング言語であるPythonを学び始めたところです。 raw_inputのユーザー入力を特定の文字と特定の長さに制限する方法を知りたい。たとえば、ユーザーがa-z以外の文字を含む文字列を入力した場合にエラーメッセージを表示し、ユーザーが15文字以上を入力した場合にエラーメッセージを表示します。

最初のものは正規表現でできることのように思えますが、Javascriptでそれらを使用したことがあるので少し知っていますが、Pythonでそれらを使用する方法はわかりません。 2つ目は、どのようにアプローチするかわかりません。誰でも助けることができますか?

14
kidosu

質問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
15
Niklas B.

正規表現は文字数を制限することもできます。

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

入力が完全に小文字ASCII文字で1〜15文字の場合のみ一致する正規表現を提供します。

13
Tim Pietzcker
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"
0
ElKamina