किसी भी अल्फा वर्ण [ए-जेए-जेड] से मेल खाने के लिए मैं स्टार्टविथ फ़ंक्शन का उपयोग कैसे कर सकता हूं। उदाहरण के लिए मैं यह करने के लिए करना चाहते हैं:पायथन: किसी भी अल्फा वर्ण से शुरू होता है
if line.startswith(ALPHA):
Do Something
किसी भी अल्फा वर्ण [ए-जेए-जेड] से मेल खाने के लिए मैं स्टार्टविथ फ़ंक्शन का उपयोग कैसे कर सकता हूं। उदाहरण के लिए मैं यह करने के लिए करना चाहते हैं:पायथन: किसी भी अल्फा वर्ण से शुरू होता है
if line.startswith(ALPHA):
Do Something
तुम भी गैर- ASCII पत्र का मिलान करना चाहते हैं, तो आप कर सकते हैं:
if line and line[0].isalpha():
एक आसान समाधान अजगर regex मॉड्यूल का उपयोग करने के लिए होगा: मैच के लिए
import re
if re.match("^[a-zA-Z]+.*", line):
Do Something
-1: रेगुलर एक्सप्रेशन का उपयोग बड़े पैमाने पर overkil है मैं इस काम के लिए। इसके अलावा आपको केवल पहले अक्षर की जांच करने की आवश्यकता है - यह रेगेक्स पूरी स्ट्रिंग को आजमाएगा और मैच करेगा, जो बहुत लंबा हो सकता है। –
भले ही आपको पुनः मॉड्यूल का उपयोग करने के लिए मजबूर किया गया हो, फिर भी आपको केवल '[a-zA-Z] 'था। '^' एक कीस्ट्रोक का अपशिष्ट है ('खोज' और' मिलान' 'के बीच अंतर के बारे में दस्तावेज़ अनुभाग पढ़ें। '+' समय की मामूली बर्बादी है (प्रमुख अगर स्ट्रिंग में शुरुआत में कई अक्षर हैं); एक पत्र पर्याप्त है। '। *' 2 कीस्ट्रोक का कचरा है और संभवतः बहुत अधिक समय है। –
आप startswiths()
करने के लिए एक टपल पारित कर सकते हैं (पायथन में 2.5+) उसके तत्वों के किसी भी:
import string
ALPHA = string.ascii_letters
if line.startswith(tuple(ALPHA)):
pass
बेशक
, इस सरल मामले के लिए, एक regex परीक्षण या in
ऑपरेटर अधिक पढ़े जा सकेंगे।
मुझे यह नहीं पता था। +1 इस प्रश्न के लिए सबसे अच्छे उत्तर के लिए नहीं है, लेकिन क्योंकि यह मेरे अपने कोड के एक टन के लिए अब तक का सबसे अच्छा जवाब है। धन्यवाद। – DaveTheScientist
यह शायद सबसे प्रभावी तरीका है:
if line != "" and line[0].isalpha():
...
+1, यह सबसे अच्छा समाधान है, खासकर यदि किसी फ़ंक्शन में लपेटा गया हो या यहां तक कि कुछ सत्यापन वर्ग की विधि भी हो। –
आपको क्यों लगता है कि यह लाइन और लाइन [0] .isalpha(): 'से बेहतर है? –
आप कारतूस के बारे में परवाह नहीं है अगर स्ट्रिंग के सामने, में
if line and line.lstrip()[0].isalpha():
if line.startswith((chr(x) for x in range(ord('a'), ord('z')+1)+range(ord('A'), ord('Z')+1)):
# do processsing
pass
+1, यह सबसे अच्छा समाधान है, खासकर यदि किसी फ़ंक्शन में लपेटा गया हो या यहां तक कि कुछ सत्यापन वर्ग की विधि भी हो। –
बेशक, लाइन गैर-असीसी भाग के काम के लिए एक यूनिकोड ऑब्जेक्ट होना चाहिए। – u0b34a0f6ae
यहां तक कि छोटा: 'यदि लाइन [: 1] .isalpha(): ' –