2012-01-06 9 views
12

Ho appena iniziato ad imparare il mio primo vero linguaggio di programmazione, Python. Mi piacerebbe sapere come limitare l'input dell'utente in un raw_input a determinati caratteri e ad una certa lunghezza. Ad esempio, mi piacerebbe mostrare un messaggio di errore se l'utente immette una stringa che contiene qualcosa eccetto le lettere a-z e mi piacerebbe mostrarne una se l'utente inserisce più di 15 caratteri.Limitazione delle stringhe di input Python a determinati caratteri e lunghezze

Il primo sembra qualcosa che potrei fare con le espressioni regolari, che conosco un po 'perché li ho usati in cose Javascript, ma non sono sicuro di come usarli in Python. Il secondo, non sono sicuro di come affrontarlo. Qualcuno può aiutare?

risposta

12

Domanda 1: Limita a certi personaggi

Hai ragione, questo è facile da risolvere 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() 

Domanda 2: Limitare per certa lunghezza

Come Tim citato correttamente, è possibile farlo adattando il espressione regolare nel primo esempio per consentire solo un certo numero di lettere. È inoltre possibile controllare manualmente la lunghezza in questo modo:

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

O entrambe le cose in 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

I regexes possono anche limitare il numero di caratteri.

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

ti dà un'espressione regolare che corrisponde solo se l'ingresso è lettere ASCII del tutto minuscole e da 1 a 15 caratteri.

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" 
Problemi correlati