বড় হাতের স্ট্রিং থেকে এমনকি বড় হাতের অংশকে ছোট হাতের কাছে রূপান্তর করার কোনও উপায় কি আছে?
উদাহরণস্বরূপ, "কিলোমিটার" → "কিলোমিটার"।
বড় হাতের স্ট্রিং থেকে এমনকি বড় হাতের অংশকে ছোট হাতের কাছে রূপান্তর করার কোনও উপায় কি আছে?
উদাহরণস্বরূপ, "কিলোমিটার" → "কিলোমিটার"।
উত্তর:
ব্যবহার .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 এ আপনি পাইকইউ বা পাই 2 কেসফোল্ড দেখতে চান - বেশ কয়েকটি উত্তর এখানে এটিকে সম্বোধন করে ।
পাইথন 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()
Километр
স্ক্রিপ্টগুলিতে পাইথন নন-এসসিআই (পাইথন ২.২ অনুসারে, এবং পাইথন ২.৪-এ সতর্কতা) হিসাবে আপত্তি জানায় বাইটস স্ট্রিংয়ে কোনও এনকোডিং দেওয়া হয়নি, যেহেতু উদ্দেশ্যে কোডিং অস্পষ্ট হবে। যে আরো জানার জন্য, কিভাবে-থেকে ইউনিকোড দেখতে ডক্স এবং 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 সহ, এটি ইউটিএফ -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'
আমরা এটি করতে দ্বিতীয় উপায়টি দেখতে পাচ্ছি, @ অ্যারোনহালের দুর্দান্ত উত্তরটি উল্লেখ করে। >>>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