2012-01-06 2116 views
12

我剛開始學習我的第一個真正的編程語言Python。我想知道如何將用戶在raw_input中的輸入約束爲某些字符和某個長度。例如,如果用戶輸入的字符串除字母a-z之外的任何字符,我想顯示一條錯誤消息,並且如果用戶輸入的字符超過15個,我想顯示一條。將Python輸入字符串限制爲某些字符和長度

第一個看起來像是我可以用正則表達式做的事情,我知道這一點,因爲我已經在Javascript中使用過它們,但我不確定如何在Python中使用它們。第二個,我不知道如何處理它。誰能幫忙?

回答

12

問題1:限制對某些字符

你是對的,這是很容易與regular expressions解決:

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:限制一定長度

正如Tim所說的,你可以通過調整第一個例子中的正則表達式只允許一定數量的字母。您也可以手動檢查這樣的長度:

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

正則表達式還可以限制字符數。

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

給你,只有匹配如果輸入小寫完全ASCII字母和1到15個字符長的正則表達式。

0
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"