উদাহরণ:
HILO -> Hilo
new york -> New York
SAN FRANCISCO -> San Francisco
এই কাজটি সম্পাদন করার জন্য কি কোনও গ্রন্থাগার বা মানক উপায় রয়েছে?
উদাহরণ:
HILO -> Hilo
new york -> New York
SAN FRANCISCO -> San Francisco
এই কাজটি সম্পাদন করার জন্য কি কোনও গ্রন্থাগার বা মানক উপায় রয়েছে?
উত্তর:
titleডক্স থেকে ডান ব্যবহার করুন না কেন :
>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"
আপনি যদি সত্যিই পাস্কেলকেস চাইতেন তবে আপনি এটি ব্যবহার করতে পারেন:
>>> ''.join(x for x in 'make IT pascal CaSe'.title() if not x.isspace())
'MakeItPascalCase'
title: "অ্যালগরিদম একটানা অক্ষরের গোষ্ঠী হিসাবে একটি শব্দের একটি সাধারণ ভাষা-স্বতন্ত্র সংজ্ঞা ব্যবহার করে। সংজ্ঞাটি অনেকগুলি প্রসঙ্গে কাজ করে তবে এর অর্থ হ'ল সংকোচনগুলিতে অস্ট্রোফেসগুলি শব্দের সীমানা ধারণ করে, যা পছন্দসই ফলাফল নাও হতে পারে "। একটি সম্ভাব্য সমাধান হ'ল লরেন্সের উত্তরটি রেইজেক্সের সাথে ব্যবহার করা r"['\w]+"হবে যাতে অ্যাডাস্ট্রোফস কোনও ম্যাচটি শেষ না করে (অতিরিক্ত বিরামচিহ্ন প্রয়োজন হিসাবে যুক্ত করা যেতে পারে)।
'make IT camel CaSe'.title().replace(' ', '')।
def toCamel(s): ret = ''.join(x for x in s.title() if not x.isspace()) return ret[0].lower() + ret[1:] ব্যবহার:toCamel("WRITE this in camelcase") 'writeThisInCamelcase'
এইটি সর্বদা ছোট হাতের সাথে শুরু হবে এবং অক্ষরহীন অক্ষরগুলিও ছাঁটাবে:
def camelCase(st):
output = ''.join(x for x in st.title() if x.isalnum())
return output[0].lower() + output[1:]
def capitalizeWords(s):
return re.sub(r'\w+', lambda m:m.group(0).capitalize(), s)
re.sub"প্রতিস্থাপন" এর জন্য একটি ফাংশন নিতে পারে (কেবল একটি স্ট্রিংয়ের চেয়ে, যা ব্যবহারটি বেশিরভাগ লোকের সাথে পরিচিত বলে মনে হয়)। এই Repl ফাংশনটি re.Matchপ্যাটার্নের প্রতিটি ম্যাচের জন্য একটি অবজেক্টের সাথে ডাকা হবে এবং ফলাফলটি (যা স্ট্রিং হওয়া উচিত) সেই ম্যাচের প্রতিস্থাপন হিসাবে ব্যবহৃত হবে।
একই জিনিসটির দীর্ঘতর সংস্করণ:
WORD_RE = re.compile(r'\w+')
def capitalizeMatch(m):
return m.group(0).capitalize()
def capitalizeWords(s):
return WORD_RE.sub(capitalizeMatch, s)
এটি প্যাটার্নটি প্রাক-সংকলন করে (সাধারণত ভাল ফর্ম হিসাবে বিবেচিত হয়) এবং ল্যাম্বদার পরিবর্তে একটি নামযুক্ত ফাংশন ব্যবহার করে।
matchফাংশনে পাস হবে? এবং যেহেতু matchesনিয়মিত অভিব্যক্তিতে গ্রুপ থাকে। কেন এই লাইন বিদ্যমান lambda m:m.group(0).capitalize()?
re.sub"রিপ্লেসমেন্ট" হিসাবে কলযোগ্য (যেমন: একটি ফাংশন) দেওয়া হয়, তখন এটি ম্যাচ অবজেক্টটিকে সেই কলযোগ্যটি পাস করে এবং একটি স্ট্রিং ফিরে পাওয়ার প্রত্যাশা করে যা এটি বাস্তবে প্রতিস্থাপন হিসাবে ব্যবহার করে। আপনি যদি ল্যাম্বডাসকে বিভ্রান্তকর মনে করেন, "দীর্ঘতর সংস্করণ" আরও একই শব্দটি আরও ভারবস করে দেয়।
একটা লিখবে না কেন? এর মতো কিছু আপনার প্রয়োজনীয়তা পূরণ করতে পারে:
def FixCase(st):
return ' '.join(''.join([w[0].upper(), w[1:].lower()]) for w in st.split())
দ্রষ্টব্য: কেন আমি আরও একটি উত্তর সরবরাহ করছি? এই উত্তরটি প্রশ্নের শিরোনাম এবং উটকেইস হিসাবে সংজ্ঞায়িত করা এই ধারণার উপর ভিত্তি করে তৈরি করা হয়েছে: সংক্ষিপ্ত শব্দের একটি সিরিজ (কোনও ফাঁকা স্থান নেই!) যেমন প্রতিটি মূল শব্দ একটি মূল অক্ষর দিয়ে শুরু হয় (বাকী ছোট হাতের অক্ষর থাকে) সিরিজের প্রথম শব্দ ব্যতীত (যা সম্পূর্ণ ছোট হাতের অক্ষর)। এছাড়াও এটি ধরে নেওয়া হয় যে "সমস্ত স্ট্রিং" ASCII অক্ষর সেটকে বোঝায়; ইউনিকোড এই সমাধানটি নিয়ে কাজ করবে না)।
উপরোক্ত সংজ্ঞা দেওয়া, এই ফাংশন
import re
word_regex_pattern = re.compile("[^A-Za-z]+")
def camel(chars):
words = word_regex_pattern.split(chars)
return "".join(w.lower() if i is 0 else w.title() for i, w in enumerate(words))
বলা হয়, এই পদ্ধতিতে ফলাফল হবে
camel("San Francisco") # sanFrancisco
camel("SAN-FRANCISCO") # sanFrancisco
camel("san_francisco") # sanFrancisco
মনে রাখবেন যে ইতিমধ্যে একটি উট কেসযুক্ত স্ট্রিংয়ের সাথে উপস্থাপিত হলে এটি ব্যর্থ হয়!
camel("sanFrancisco") # sanfrancisco <-- noted limitation
নোট করুন যে এটি অনেকগুলি ইউনিকোড স্ট্রিং সহ ব্যর্থ হয়
camel("México City") # mXicoCity <-- can't handle unicode
এই কেসগুলির জন্য আমার কাছে কোনও সমাধান নেই (বা অন্যান্য যেগুলি কিছু সৃজনশীলতার সাথে পরিচিত হতে পারে)। সুতরাং, স্ট্রিংগুলির সাথে যা কিছু করতে হবে তার মতোই, আপনার নিজের প্রান্তের মামলাগুলি এবং ইউনিকোড দিয়ে শুভকামনা আবরণ করুন!
সম্ভাব্য গ্রন্থাগার: https://pypi.org/project/stringcase/
উদাহরণ:
import stringcase
stringcase.camelcase('foo_bar_baz') # => "fooBarBaz"
যদিও এটি ফাঁকা জায়গা ছেড়ে দেবে কিনা তা সন্দেহজনক (
কেবলমাত্র টাইটেল () ব্যবহার করুন এবং এটি মূল শব্দের প্রথম শব্দের রূপান্তরিত করবে, বাকী ছোট থাকবে:
>>> a='mohs shahid ss'
>>> a.title()
'Mohs Shahid Ss'
>>> a='TRUE'
>>> b=a.title()
>>> b
'True'
>>> eval(b)
True
def camelCase(st):
s = st.title()
d = "".join(s.split())
d = d.replace(d[0],d[0].lower())
return d