2011-03-18 11 views
8

मैं अगर वहाँ एक अधिक कॉम्पैक्ट शैली में निम्न कार्य करने के लिए एक रास्ता है सोच रहा हूँ:पायथन एकाधिक तुलना शैली?

if (text == "Text1" or text=="Text2" or text=="Text3" or text=="Text4"): 
    do_something() 

समस्या मैं अगर बयान में सिर्फ 4 से तुलना की तुलना में अधिक है और यह नहीं बल्कि लंबे, अस्पष्ट देखने के लिए शुरू कर रहा है , और भद्दा। कोई विचार?

उत्तर

16

कैसे इस बारे में:

if text in ('Text1', 'Text2', 'Text3', 'Text4'): 
    do_something() 

मैं हमेशा कि सरल और सुरुचिपूर्ण पाया है।

+0

सामान्य पायथन शैली कोष्ठक के चारों ओर रिक्त स्थान नहीं लगाते हैं। @ ब्रेंट ने यह सही किया था, लेकिन किसी कारण से इसे हटा दिया। –

+0

बस जो मैं खोज रहा था, धन्यवाद, मेरा कोड अब बहुत बेहतर दिख रहा है :) – Symon

+0

@GlennMaynard: पेप -8 अनुस्मारक के लिए धन्यवाद। निजी तौर पर, मुझे माता-पिता के अंदर की जगह रखने के लिए और अधिक सुगम लगता है, लेकिन मुझे उन्हें उदाहरणों में छोड़ना याद रखना चाहिए। –

7

"अगर पाठ में" उत्तर अच्छा है, लेकिन यदि आप अपने पाठ तार पैटर्न को फिट करते हैं तो आप पुनः (नियमित अभिव्यक्ति) पैकेज के बारे में भी सोच सकते हैं। उदाहरण के लिए, अपना उदाहरण शाब्दिक रूप से लेना, एक अंक के बाद "टेक्स्ट" एक साधारण नियमित अभिव्यक्ति होगी।

यहां एक उदाहरण है जो "टेक्स्ट" के लिए एक अंक के बाद काम करना चाहिए। \ Z स्ट्रिंग के अंत से मेल खाता है, \ n एक अंक।

if re.match('Text\d\Z', text): 
    do_something() 
+0

मैं इसे ऊपर उठाया होगा यह एक उदाहरण प्रदान किया गया था ... – martineau

+0

मैंने एक उदाहरण में संपादित किया। – dsmccoy

+0

अब यह और अधिक है। ;-) (असल में आपको '! = कोई नहीं' भाग, बीटीडब्ल्यू की आवश्यकता नहीं है।) – martineau

संबंधित मुद्दे