2010-03-07 10 views
13

किसी भी अल्फा वर्ण [ए-जेए-जेड] से मेल खाने के लिए मैं स्टार्टविथ फ़ंक्शन का उपयोग कैसे कर सकता हूं। उदाहरण के लिए मैं यह करने के लिए करना चाहते हैं:पायथन: किसी भी अल्फा वर्ण से शुरू होता है

if line.startswith(ALPHA): 
    Do Something 

उत्तर

35

तुम भी गैर- ASCII पत्र का मिलान करना चाहते हैं, तो आप कर सकते हैं:

if line and line[0].isalpha(): 
+0

+1, यह सबसे अच्छा समाधान है, खासकर यदि किसी फ़ंक्शन में लपेटा गया हो या यहां तक ​​कि कुछ सत्यापन वर्ग की विधि भी हो। –

+0

बेशक, लाइन गैर-असीसी भाग के काम के लिए एक यूनिकोड ऑब्जेक्ट होना चाहिए। – u0b34a0f6ae

+13

यहां तक ​​कि छोटा: 'यदि लाइन [: 1] .isalpha(): ' –

5

एक आसान समाधान अजगर regex मॉड्यूल का उपयोग करने के लिए होगा: मैच के लिए

import re 
if re.match("^[a-zA-Z]+.*", line): 
    Do Something 
+0

-1: रेगुलर एक्सप्रेशन का उपयोग बड़े पैमाने पर overkil है मैं इस काम के लिए। इसके अलावा आपको केवल पहले अक्षर की जांच करने की आवश्यकता है - यह रेगेक्स पूरी स्ट्रिंग को आजमाएगा और मैच करेगा, जो बहुत लंबा हो सकता है। –

+5

भले ही आपको पुनः मॉड्यूल का उपयोग करने के लिए मजबूर किया गया हो, फिर भी आपको केवल '[a-zA-Z] 'था। '^' एक कीस्ट्रोक का अपशिष्ट है ('खोज' और' मिलान' 'के बीच अंतर के बारे में दस्तावेज़ अनुभाग पढ़ें। '+' समय की मामूली बर्बादी है (प्रमुख अगर स्ट्रिंग में शुरुआत में कई अक्षर हैं); एक पत्र पर्याप्त है। '। *' 2 कीस्ट्रोक का कचरा है और संभवतः बहुत अधिक समय है। –

8

आप startswiths() करने के लिए एक टपल पारित कर सकते हैं (पायथन में 2.5+) उसके तत्वों के किसी भी:

import string 
ALPHA = string.ascii_letters 
if line.startswith(tuple(ALPHA)): 
    pass 
बेशक

, इस सरल मामले के लिए, एक regex परीक्षण या in ऑपरेटर अधिक पढ़े जा सकेंगे।

+0

मुझे यह नहीं पता था। +1 इस प्रश्न के लिए सबसे अच्छे उत्तर के लिए नहीं है, लेकिन क्योंकि यह मेरे अपने कोड के एक टन के लिए अब तक का सबसे अच्छा जवाब है। धन्यवाद। – DaveTheScientist

3

यह शायद सबसे प्रभावी तरीका है:

if line != "" and line[0].isalpha(): 
    ... 
+0

+1, यह सबसे अच्छा समाधान है, खासकर यदि किसी फ़ंक्शन में लपेटा गया हो या यहां तक ​​कि कुछ सत्यापन वर्ग की विधि भी हो। –

+5

आपको क्यों लगता है कि यह लाइन और लाइन [0] .isalpha(): 'से बेहतर है? –

-1

आप कारतूस के बारे में परवाह नहीं है अगर स्ट्रिंग के सामने, में

if line and line.lstrip()[0].isalpha(): 
0
if line.startswith((chr(x) for x in range(ord('a'), ord('z')+1)+range(ord('A'), ord('Z')+1)): 
    # do processsing 
    pass 
संबंधित मुद्दे