2012-01-06 36 views
12

Tôi vừa mới bắt đầu học ngôn ngữ lập trình thực sự đầu tiên của mình, Python. Tôi muốn biết cách hạn chế đầu vào của người dùng trong một số raw_input đối với các ký tự nhất định và đến một độ dài nhất định. Ví dụ: tôi muốn hiển thị thông báo lỗi nếu người dùng nhập chuỗi chứa bất kỳ nội dung nào ngoại trừ các chữ cái a-z và tôi muốn hiển thị một chuỗi nếu người dùng nhập hơn 15 ký tự.Giới hạn chuỗi đầu vào Python đối với các ký tự và độ dài nhất định

Điều đầu tiên có vẻ giống như những gì tôi có thể làm với các biểu thức chính quy, tôi biết một chút vì tôi đã sử dụng chúng trong Javascript, nhưng tôi không biết cách sử dụng chúng bằng Python. Điều thứ hai, tôi không chắc cách tiếp cận nó. Có ai giúp được không?

Trả lời

12

Câu hỏi 1: Giới hạn để ký tự nhất định

Bạn đang đúng, điều này rất dễ dàng để giải quyết với 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() 

Câu hỏi 2: Giới hạn theo chiều dài nhất định

Vì Tim đã đề cập chính xác, bạn có thể thực hiện việc này bằng cách điều chỉnh biểu thức chính quy trong ví dụ đầu tiên chỉ cho phép một số chữ cái nhất định. Bạn cũng có thể tự kiểm tra độ dài như thế này:

input_str = raw_input("Please provide some info: ") 
if len(input_str) > 15: 
    print "Error! Only 15 characters allowed!" 
    sys.exit() 

Hoặc cả trong một:

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

Regex cũng có thể giới hạn số ký tự.

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

cung cấp cho bạn một regex chỉ phù hợp nếu đầu vào là chữ cái ASCII viết thường hoàn toàn và từ 1 đến 15 ký tự.

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" 
Các vấn đề liên quan