क्या अपरकेस से एक स्ट्रिंग को बदलने का एक तरीका है, या यहां तक कि अपरकेस को निचले हिस्से में बदलना है?
उदाहरण के लिए, "किलोमीटर" → "किलोमीटर"।
क्या अपरकेस से एक स्ट्रिंग को बदलने का एक तरीका है, या यहां तक कि अपरकेस को निचले हिस्से में बदलना है?
उदाहरण के लिए, "किलोमीटर" → "किलोमीटर"।
जवाबों:
उपयोग .lower()
- उदाहरण के लिए:
s = "Kilometer"
print(s.lower())
आधिकारिक 2.x प्रलेखन यहाँ है:
आधिकारिक 3.x प्रलेखन यहाँ है:str.lower()
str.lower()
पायथन में स्ट्रिंग को लोअरकेस में कैसे बदलें?
क्या पूरे उपयोगकर्ता इनपुट स्ट्रिंग को अपरकेस, या यहां तक कि अपरकेस से लोअरकेस में बदलने का कोई तरीका है?
जैसे किलोमीटर -> किलोमीटर
ऐसा करने का विहित पायथोनिक तरीका है
>>> '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 में, आप PyICU या py2casefold को देखना चाहेंगे - कई उत्तर यहां दिए गए हैं ।
पायथन 3 यूनिकोड के रूप में सादे स्ट्रिंग शाब्दिक संभालता है:
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
पायथन 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 में चेतावनी) पर आपत्ति करेगा, बाइट बिना किसी एन्कोडिंग के एक स्ट्रिंग में हो रही है, क्योंकि इच्छित कोडिंग अस्पष्ट होगी। उस पर अधिक के लिए, डॉक्स और PEP 263 में यूनिकोड को कैसे देखें
str
शाब्दिकों का नहींइसलिए हमें unicode
इस रूपांतरण को संभालने के लिए एक स्ट्रिंग की आवश्यकता है , जिसे एक यूनिकोड स्ट्रिंग शाब्दिक के साथ आसानी से पूरा किया जाता है, जो एक u
उपसर्ग के साथ संवितरित होता है (और ध्यान दें कि u
उपसर्ग भी पायथन 3 में काम करता है):
>>> 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
। पायथन का यूनिकोड प्रकार एक सार्वभौमिक एन्कोडिंग प्रारूप है जिसमें अधिकांश अन्य एन्कोडिंग के सापेक्ष कई फायदे हैं । हम या तो unicode
कंस्ट्रक्टर या str.decode
विधि का उपयोग करने के लिए कोडेक str
को 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
, अजगर स्ट्रिंग को 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 में, यूनिकोड पायथन स्ट्रिंग्स में एन्कोड कर सकता है, और पाइथन स्ट्रिंग्स यूनिकोड प्रकार में डिकोड कर सकता है।
पायथन 2 के साथ, यह UTF-8 में गैर-अंग्रेजी शब्दों के लिए काम नहीं करता है। इस मामले में decode('utf-8')
मदद कर सकते हैं:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
decode('utf-8')
पायथन 3 में न केवल अनावश्यक है, बल्कि एक त्रुटि का कारण बनता है। ( रेफ )। उदाहरण: $python3; >>>s='Километр'; >>>print (s.lower); #result: километр >>>s.decode('utf-8').lower(); #result: ...AttributeError: 'str' object has no attribute 'decode'
हम @AaronHall के उत्कृष्ट उत्तर को संदर्भित करते हुए, ऐसा करने का दूसरा तरीका देख सकते हैं। >>>s.casefold() #result: километр
इसके अलावा, आप कुछ चर को अधिलेखित कर सकते हैं:
s = input('UPPER CASE')
lower = s.lower()
यदि आप इस तरह का उपयोग करते हैं:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
यह सिर्फ जब कहा जाता है काम करेगा।
s=s.lower()
जाने का रास्ता है।
यह पूरी तरह से संयुक्त राष्ट्र की सिफारिश की कोशिश मत करो, यह मत करो:
import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))
आउटपुट:
abcd
चूंकि किसी ने इसे नहीं लिखा था, swapcase
इसलिए आप इसका उपयोग कर सकते हैं (इसलिए अपरकेस अक्षर लोअरकेस हो जाएंगे, और इसके विपरीत) (और यह आपको उन मामलों में उपयोग करना चाहिए, जहां मैंने अभी उल्लेख किया है (ऊपरी से निचले, निचले से ऊपरी में कनवर्ट करें):
s='ABCD'
print(s.swapcase())
आउटपुट:
abcd
>>> "raison d'être".casefold(); "raison d'être"
की जाँच करें इस उत्तर के बारे मेंunidecode