2012-01-06 10 views
12

पर पायथन इनपुट तारों को सीमित करना मैंने अपनी पहली वास्तविक प्रोग्रामिंग भाषा, पायथन सीखना शुरू कर दिया। मैं जानना चाहता हूं कि कुछ वर्णों और निश्चित लंबाई तक raw_input में उपयोगकर्ता इनपुट को बाधित कैसे करें। उदाहरण के लिए, यदि कोई उपयोगकर्ता स्ट्रिंग इनपुट करता है जिसमें a-z अक्षरों को छोड़कर कुछ भी शामिल है, तो मैं एक त्रुटि संदेश दिखाना चाहता हूं, और यदि उपयोगकर्ता 15 से अधिक वर्ण इनपुट करता है तो मैं एक दिखाना चाहता हूं।कुछ वर्णों और लंबाई

पहला ऐसा लगता है जो मैं नियमित अभिव्यक्तियों के साथ कर सकता हूं, जिसे मैं थोड़ा जानता हूं क्योंकि मैंने उन्हें जावास्क्रिप्ट चीजों में उपयोग किया है, लेकिन मुझे यकीन नहीं है कि उन्हें पायथन में कैसे उपयोग किया जाए। दूसरा, मुझे यकीन नहीं है कि इसे कैसे पहुंचाया जाए। क्या कोई मदद कर सकता है?

उत्तर

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: निश्चित लंबाई

पर सीमित करें

जैसा कि टिम सही ढंग से वर्णित है, आप इसे अनुकूलित करके ऐसा कर सकते हैं पहले उदाहरण में नियमित अभिव्यक्ति केवल अक्षरों की एक निश्चित संख्या को अनुमति देने के लिए। आप मैन्युअल रूप से इस तरह लंबाई की जांच कर सकते हैं:

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}$") 

आप एक regex केवल मेल खाता है कि अगर इनपुट पूरी तरह लोअरकेस 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" 
संबंधित मुद्दे