2012-01-06 401 views
12

Acabo de empezar a aprender mi primer lenguaje de programación real, Python. Me gustaría saber cómo restringir la entrada del usuario en un raw_input a ciertos caracteres y a cierta longitud. Por ejemplo, me gustaría mostrar un mensaje de error si el usuario ingresa una cadena que contiene algo excepto las letras a-z, y me gustaría mostrar una si el usuario ingresa más de 15 caracteres.Limitar las cadenas de entrada de Python a ciertos caracteres y longitudes

El primero parece ser algo que podría hacer con expresiones regulares, de las que sé un poco porque las he usado en JavaScript, pero no estoy seguro de cómo usarlas en Python. El segundo, no estoy seguro de cómo abordarlo. ¿Alguien puede ayudar?

Respuesta

12

Pregunta 1: restringir a ciertos caracteres

Tienes razón, esto es fácil de resolver con 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() 

Pregunta 2: Restringir a cierta longitud

Como Tim mencionó correctamente, puede hacer esto adaptando el expresión regular en el primer ejemplo para permitir solo un cierto número de letras. También puede comprobar manualmente la longitud de esta manera:

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

O las dos cosas en una:

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

Regexes también puede limitar el número de caracteres.

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

le da una expresión regular que sólo coincide si la entrada es totalmente letras ASCII en minúscula y de 1 a 15 caracteres de longitud.

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" 
Cuestiones relacionadas