python पायथन में स्ट्रिंग से लोअरकेस को कैसे परिवर्तित करें




string unicode (8)

पायथन में स्ट्रिंग से लोअरकेस को कैसे परिवर्तित करें?

क्या पूरे उपयोगकर्ता इनपुट स्ट्रिंग को अपरकेस से परिवर्तित करने का कोई तरीका है, या यहां तक ​​कि भाग अपरकेस को लोअरकेस में भी परिवर्तित करने का कोई तरीका है?

जैसे किलोमीटर -> किलोमीटर

ऐसा करने का कैननिकल पाइथोनिक तरीका है

>>> 'Kilometers'.lower()
'kilometers'

हालांकि, यदि उद्देश्य असंवेदनशील मिलान करना है, तो आपको केस-फोल्डिंग का उपयोग करना चाहिए:

>>> 'Kilometers'.casefold()
'kilometers'

यहाँ पर क्यों:

>>> "Maße".casefold()
'masse'
>>> "Maße".lower()
'maße'
>>> "MASSE" == "Maße"
False
>>> "MASSE".lower() == "Maße".lower()
False
>>> "MASSE".casefold() == "Maße".casefold()
True

यह पायथन 3 में एक स्ट्र विधि है, लेकिन पायथन 2 में, आप पीआईआईसीयू या पी 2 2केसफोल्ड को देखना चाहेंगे - कई उत्तरों ने इसे यहां संबोधित किया है ।

यूनिकोड पायथन 3

पायथन 3 नियमित तारों के रूप में यूनिकोड को संभालता है:

>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'

यूनिकोड पायथन 2

लेकिन पाइथन 2, नीचे, एक खोल में चिपकाया नहीं है, utf-8 का उपयोग करके शाब्दिक को बाइट्स की एक स्ट्रिंग के रूप में एन्कोड करता है।

और lower यूनिकोड ऑब्जेक्ट्स के बारे में जागरूक किसी भी बदलाव को मैप नहीं करता है, इसलिए हमें एक ही स्ट्रिंग मिलती है।

>>> string = 'Километр'
>>> string
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> string.lower()
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> print string.lower()
Километр

स्क्रिप्ट में, पाइथन गैर-एसीसी (पायथन 2.5 के रूप में, और पायथन 2.4 में चेतावनी) बाइट्स को स्ट्रिंग में होने वाले स्ट्रिंग में होने पर ऑब्जेक्ट करेगा, क्योंकि इच्छित कोडिंग संदिग्ध होगा। उस पर और अधिक के लिए, docs और पीईपी 263 में यूनिकोड कैसे करें

यूनिकोड अक्षर का प्रयोग करें, str अक्षर नहीं

इसलिए हमें इस रूपांतरण को संभालने के लिए एक unicode स्ट्रिंग की आवश्यकता है, जो यूनिकोड शाब्दिक के साथ आसानी से पूरा किया गया है:

>>> unicode_literal = u'Километр'
>>> print unicode_literal.lower()
километр

ध्यान दें कि बाइट str बाइट्स से पूरी तरह अलग हैं - बचने वाले चरित्र '\u' बाद 2-बाइट चौड़ाई, या इन unicode अक्षरों के 16 बिट प्रतिनिधित्व के बाद है:

>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'

अब अगर हमारे पास केवल एक str के रूप में है, तो हमें इसे unicode परिवर्तित करने की आवश्यकता है। पायथन का यूनिकोड प्रकार एक सार्वभौमिक एन्कोडिंग प्रारूप है जिसमें अधिकांश अन्य एन्कोडिंग के सापेक्ष कई advantages । हम str.decode को unicode कनवर्ट करने के लिए कोडेक के साथ unicode कन्स्ट्रक्टर या str.decode विधि का उपयोग कर सकते unicode :

>>> unicode_from_string = unicode(string, 'utf-8') # "encoding" unicode from string
>>> print unicode_from_string.lower()
километр
>>> string_to_unicode = string.decode('utf-8') 
>>> print string_to_unicode.lower()
километр
>>> unicode_from_string == string_to_unicode == unicode_literal
True

दोनों विधियां यूनिकोड प्रकार में परिवर्तित होती हैं - और यूनिकोड_लिटरल के समान होती हैं।

सर्वश्रेष्ठ अभ्यास, यूनिकोड का उपयोग करें

यह अनुशंसा की जाती है कि आप हमेशा यूनिकोड में टेक्स्ट के साथ काम करें

सॉफ़्टवेयर को केवल यूनिकोड तारों के साथ आंतरिक रूप से काम करना चाहिए, आउटपुट पर एक विशेष एन्कोडिंग में परिवर्तित करना चाहिए।

आवश्यक होने पर वापस एन्कोड कर सकते हैं

हालांकि, लोअरकेस को टाइप str में वापस पाने के लिए, python स्ट्रिंग को utf-8 फिर से एन्कोड करें:

>>> print string
Километр
>>> string
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> string.decode('utf-8')
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> string.decode('utf-8').lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> string.decode('utf-8').lower().encode('utf-8')
'\xd0\xba\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> print string.decode('utf-8').lower().encode('utf-8')
километр

तो पायथन 2 में, यूनिकोड पाइथन स्ट्रिंग में एन्कोड कर सकता है, और पायथन स्ट्रिंग यूनिकोड प्रकार में डीकोड कर सकते हैं।

क्या स्ट्रिंग को अपरकेस से, या यहां तक ​​कि भाग अपरकेस को लोअरकेस में बदलने का कोई तरीका है?

जैसे किलोमीटर -> किलोमीटर।


यदि आप सूची में एकाधिक स्ट्रिंग्स पर इस ऑपरेशन को करने के लिए map का उपयोग करना चाहते हैं तो आपको str.lower का उपयोग करने की आवश्यकता होगी और न केवल lower :

words = ['CATS', 'KITTENS', 'Pirate Cats', 'fluffy felines']
list(map(str.lower, words))

रिटर्न

['cats', 'kittens', 'pirate cats', 'fluffy felines']

साथ ही, आप कुछ चर को ओवरराइट कर सकते हैं:

s = input('UPPER CASE')
lower = s.lower()

यदि आप इस तरह उपयोग करते हैं:

s = "Kilometer"
print(s.lower())     - kilometer
print(s)             - Kilometer

यह कॉल करने पर ही काम करेगा।


पायथन 2 के साथ, यह यूटीएफ -8 में गैर-अंग्रेजी शब्दों के लिए काम नहीं करता है। इस मामले में decode('utf-8') मदद कर सकता है:

>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр

s = "Kilometer"
print(s.lower())

आधिकारिक दस्तावेज str.lower()


यदि पूरा पाठ "किलोमेटर" जैसा अपरकेस है, और आप केवल पहले अक्षर को कम करना चाहते हैं, तो करें

text = "KILOMETER"
result = text[:1] + text[1:].lower() 
print(result)

लेकिन पूरी स्ट्रिंग को कम करने के लिए, करें

text = "KILOMETER"
text = text.lower()
print(text)

यह स्ट्रिंग को कम मामले में परिवर्तित कर देगा

string = "XYz"
converted = string.lower();
print("The converted lower case is:",converted)

आप पीटर ने जो कहा , वह कर सकते हैं, या यदि आप चाहते हैं कि उपयोगकर्ता कुछ इनपुट करे तो आप यह कर सकते हैं:

raw_input('Type Something').lower()

फिर वह उस चीज़ को स्वचालित रूप से परिवर्तित कर देगा जो उन्होंने लोअरकेस में टाइप किया था।

नोट: Python 3.x और ऊपर में raw_input का नाम बदलकर बदल दिया गया था।





lowercase