पायथन में वर्णमाला रेंज


423

इस तरह वर्णमाला के पात्रों की एक सूची बनाने के बजाय:

alpha = ['a', 'b', 'c', 'd'.........'z']

क्या कोई ऐसा तरीका है जिससे हम इसे किसी श्रेणी या किसी चीज़ में जोड़ सकते हैं? उदाहरण के लिए, संख्याओं के लिए इसका उपयोग करके समूहीकृत किया जा सकता है range():

range(1, 10)

लगता है कुछ जवाब अजगर 3 के लिए अद्यतन की आवश्यकता हो सकती है?
चार्ली पार्कर

2
@CharlieParker नहीं, शुरू से ही मुझे यकीन था कि मेरा जवाब पायथन 3 के साथ-साथ पाइथन 2 पर भी काम करेगा, क्योंकि मैंने इस्तेमाल किया था string.ascii_lowercase(दोनों पर उपलब्ध है) और नहीं string.lowercase(केवल py2 पर)
jamylon

का शिकार stackoverflow.com/questions/14927114/... (जो खुद भी लगता है जो एक शिकार होने के लिए)
hkBst

@hkBst अंतर यह है कि उन सवालों को अक्षरों की एक सबसेट रेंज के लिए पूछ रहे हैं, जबकि यह एक पूरे वर्णमाला का अनुरोध करता है (जो उत्तर को और अधिक विशिष्ट बनाता है)
जामाइलक

जवाबों:


764
>>> import string
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

यदि आपको वास्तव में एक सूची की आवश्यकता है:

>>> list(string.ascii_lowercase)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

और इसके साथ करना है range

>>> list(map(chr, range(97, 123))) #or list(map(chr, range(ord('a'), ord('z')+1)))
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

अन्य सहायक stringमॉड्यूल विशेषताएं:

>>> help(string) # on Python 3
....
DATA
    ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
    ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    digits = '0123456789'
    hexdigits = '0123456789abcdefABCDEF'
    octdigits = '01234567'
    printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
    punctuation = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
    whitespace = ' \t\n\r\x0b\x0c'

2
धन्यवाद। मैं इसे रिवर्स ऑर्डर कैसे कर सकता हूं?
एलेक्सा एलिस

63
string.ascii_lowercase[::-1]
जमीलाक

मानचित्र के परिणाम पर स्पष्ट सूची (...)
अतिशयोक्तिपूर्ण है

1
@ शेव वास्तव में पायथन 3 में mapकोई नहीं लौटता हैlist
जामेलक

1
मुझे आश्चर्य है कि अगर वहाँ एक विशिष्ट लोकेल के लिए ऐसा करने का एक तरीका है, अर्थात स्पेनिश, तुर्की, आदि अक्षर प्राप्त करें
गोंजालो

106
[chr(i) for i in range(ord('a'),ord('z')+1)]

1
मुझे मिला: [chr (अल्फा + 97) अल्फा के लिए रेंज में (0,27)] लेकिन यह बहुत अधिक सहज है। यह याद रखने की आवश्यकता नहीं है कि एक की
एससीआई

5
@MoeChughtai मुझे समझ में नहीं आता कि यह किस तरह से अधिक सफल है string.ascii_lowercase
सफल

इसके अलावा: chrange = lambda s: "".join(map(chr, range(*map(ord, s))) + [c[1]])। उपयोग: >>> chrange("az") -> 'abcdefghijklmnopqrstuvwxyz'। एक सूची के लिए, बस हटाएं"".join( )
ब्रैडेन बेस्ट

@jamylak शायद MoeChughtai का मतलब था कि यह जवाब वास्तव में लंबे स्पष्टीकरण में समाधान नहीं डूबता है।
फॉर्नोस्ट

1
@ कांटा import stringएक लंबी व्याख्या है?
जमीलक

34

पायथन 2.7 और 3 में आप इसका उपयोग कर सकते हैं:

import string
string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

जैसा कि @Zaz कहता है: string.lowercaseपदावनत है और अब पायथन 3 में काम नहीं करता है लेकिन string.ascii_lowercaseदोनों में काम करता है


2
पायथन 3 में, string.ascii_lowercase का उपयोग करें। लेकिन यह एक स्ट्रिंग लौटाता है। यदि आपको एक सूची की आवश्यकता है, तो मुझे लगता है, Bg1850 एक स्वच्छ समाधान है
पेटर्ब

शीर्ष जवाब का उल्लेख के रूप में, string.ascii_letters, string.ascii_lowercase, string.ascii_uppercaseअजगर के सारे काम 3+।
स्लिमपेडएक्स

@peterblist(string.ascii_lowercase)
ब्रैडेन बेस्ट

11

यहाँ एक साधारण पत्र-श्रेणी कार्यान्वयन है:

कोड

def letter_range(start, stop="{", step=1):
    """Yield a range of lowercase letters.""" 
    for ord_ in range(ord(start.lower()), ord(stop.lower()), step):
        yield chr(ord_)

डेमो

list(letter_range("a", "f"))
# ['a', 'b', 'c', 'd', 'e']

list(letter_range("a", "f", step=2))
# ['a', 'c', 'e']

2
बहुत अच्छा! गैर-लैटिन वर्णों के साथ भी काम करता है। मैंने बस कोशिश की।
मार्क

3

यदि आप letters[1:10]R से एक समकक्ष देख रहे हैं , तो आप इसका उपयोग कर सकते हैं:

 import string
 list(string.ascii_lowercase[0:10])

1

एक निर्मित रेंज फ़ंक्शन का उपयोग करके अजगर में ऊपरी और निचले मामले के अक्षर प्रिंट करें

def upperCaseAlphabets():
    print("Upper Case Alphabets")
    for i in range(65, 91):
        print(chr(i), end=" ")
    print()

def lowerCaseAlphabets():
    print("Lower Case Alphabets")
    for i in range(97, 123):
        print(chr(i), end=" ")

upperCaseAlphabets();
lowerCaseAlphabets();

1

यह सबसे आसान तरीका है जो मैं समझ सकता हूं:

#!/usr/bin/python3 for i in range(97, 123): print("{:c}".format(i), end='')

तो, 97 से 122 ASCII नंबर 'a' से 'और' z 'के बराबर हैं। लोअरकेस और 123 लगाने की आवश्यकता पर ध्यान दें, क्योंकि यह शामिल नहीं होगा)।

प्रिंट फ़ंक्शन में {:c}(चरित्र) प्रारूप को सेट करना सुनिश्चित करें , और, इस मामले में, हम चाहते हैं कि यह सभी को एक साथ प्रिंट करें और अंत में एक नई लाइन भी न दें, इसलिए end=''यह काम करेगा।

परिणाम यह है: abcdefghijklmnopqrstuvwxyz

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.