সেখানে পাইথন মধ্যে একটি আদর্শ উপায় একটি স্ট্রিং titlecase হয় (অর্থাত শব্দ বড়হাতের অক্ষর দিয়ে শুরু, সমস্ত অবশিষ্ট cased অক্ষর ছোট হাতের অক্ষর ব্যবহার আছে) কিন্তু মত রেখে নিবন্ধ and
, in
এবং of
lowercased?
উত্তর:
এটির সাথে কয়েকটি সমস্যা রয়েছে। যদি আপনি বিভক্ত ব্যবহার করেন এবং যোগদান করেন তবে কিছু সাদা স্থানের অক্ষর উপেক্ষা করা হবে। অন্তর্নির্মিত মূলধন এবং শিরোনাম পদ্ধতি সাদা স্থান উপেক্ষা করে না।
>>> 'There is a way'.title()
'There Is A Way'
যদি কোনও বাক্য কোনও নিবন্ধ দিয়ে শুরু হয়, আপনি ছোট হাতের শিরোনামের প্রথম শব্দটি চান না।
এগুলি মাথায় রেখে:
import re
def title_except(s, exceptions):
word_list = re.split(' ', s) # re.split behaves as expected
final = [word_list[0].capitalize()]
for word in word_list[1:]:
final.append(word if word in exceptions else word.capitalize())
return " ".join(final)
articles = ['a', 'an', 'of', 'the', 'is']
print title_except('there is a way', articles)
# There is a Way
print title_except('a whim of an elephant', articles)
# A Whim of an Elephant
str.split
স্থান বিবেচনা করে না। re.split
স্থান ধরে রাখে। সুতরাং, এই ফাংশনটি কোনও স্থান খায় না।
"".split()
সেগুলি বিবেচনা করে না তবে "".split(" ")
করেছে।
title_except('a whim of aN elephant', articles)
মামলার জন্য সঠিকভাবে কাজ করবে না । আপনি word.lower() in exceptions
এটি ঠিক করতে ফিল্টারিং শর্ত ব্যবহার করতে পারেন ।
2001 a Space Odyssey
ফিরে আসা উচিত 2001 A Space Odyssey
, যেখানে a
এটি একটি সংখ্যার অনুসরণ করে মূলধন হয়ে থাকে। আগাম ধন্যবাদ.
টাইটেলিকেস.পি মডিউলটি ব্যবহার করুন ! শুধুমাত্র ইংরাজির জন্য কাজ করে।
>>> from titlecase import titlecase
>>> titlecase('i am a foobar bazbar')
'I Am a Foobar Bazbar'
এই পদ্ধতি আছে:
>>> mytext = u'i am a foobar bazbar'
>>> print mytext.capitalize()
I am a foobar bazbar
>>> print mytext.title()
I Am A Foobar Bazbar
ছোট হাতের নিবন্ধের বিকল্প নেই। আপনাকে নিজেরাই কোড করতে হবে, সম্ভবত আপনি নিবন্ধগুলি কম করতে চান তার তালিকা ব্যবহার করে।
স্টুয়ার্ট কোলভিল একটি পাইথন পোর্ট করেছেন এর জন Gruber লেখা একটি পার্ল স্ক্রিপ্ট শিরোনাম ক্ষেত্রে রূপান্তর স্ট্রিং কিন্তু নিউ ইয়র্ক টাইমস থেকে নিয়ম রচনাশৈলী নির্দেশনা, সেইসাথে বিভিন্ন বিশেষ ক্ষেত্রে জন্য খাদ্য উপর ভিত্তি করে ছোট শব্দ ভিত্তি এড়াতে হবে।
এই লিপিগুলির কিছু চালাকতা:
তারা যদি ছোট শব্দগুলিকে মূলধন করে যেমন, যদি, চালু হয় তবে ইত্যাদি but তবে ইনপুটটিতে ভুল করে পুঁজি হলে সেগুলি আন-মূলধন করে।
স্ক্রিপ্টগুলি ধরে নিয়েছে যে প্রথম অক্ষর ব্যতীত অন্য বড় বড় অক্ষরের শব্দগুলি ইতিমধ্যে সঠিকভাবে মূলধন হয়ে গেছে। এর অর্থ তারা "আইটিউনস" বা "আইটিউনস" এর পরিবর্তে "আইটিউনস" এর মতো একটি শব্দ রেখে যাবে।
তারা লাইন বিন্দু দিয়ে কোনও শব্দ এড়িয়ে যায়; "Example.com" এবং "del.icio.us" ছোট হাতের অক্ষরে থাকবে।
তাদের কাছে বিশেষত "AT&T" এবং "প্রশ্নোত্তর" এর মতো বিজোড় মামলার সাথে মোকাবিলা করার জন্য হার্ড-কোডড হ্যাক রয়েছে, যার উভয়টিতেই ছোট শব্দ রয়েছে (এ এবং এ) যা সাধারণত ছোট হাতের হওয়া উচিত।
শিরোনামের প্রথম এবং শেষ শব্দটি সর্বদা মূলধনযুক্ত, সুতরাং "ভয় পাওয়ার কিছু নেই" এর মতো ইনপুটটিকে "কিছুই ভয় পাওয়ার ভয় নেই" তে রূপান্তরিত করা হবে।
কোলনের পরে একটি ছোট শব্দ মূলধন হবে।
আপনি এটি এখানে ডাউনলোড করতে পারেন ।
capitalize (word)
এটি করা উচিত। আমি এটি অন্যভাবে পেতে।
>>> mytext = u'i am a foobar bazbar'
>>> mytext.capitalize()
u'I am a foobar bazbar'
>>>
উপরের উত্তরে যেমন বলা হয়েছে ঠিক আছে, আপনাকে একটি কাস্টম মূলধন করতে হবে:
মাইটিেক্সট = আপনি 'আমি একটি ফুবার বাজবার'
def xcaptilize(word):
skipList = ['a', 'an', 'the', 'am']
if word not in skipList:
return word.capitalize()
return word
k = mytext.split(" ")
l = map(xcaptilize, k)
print " ".join(l)
এই ফলাফল
I am a Foobar Bazbar
not_these = ['a','the', 'of']
thestring = 'the secret of a disappointed programmer'
print ' '.join(word
if word in not_these
else word.title()
for word in thestring.capitalize().split(' '))
"""Output:
The Secret of a Disappointed Programmer
"""
শিরোনাম মূলধনী শব্দের সাথে শুরু হয় এবং এটি নিবন্ধটির সাথে মেলে না।
তালিকা অনুধাবন এবং টের্নারি অপারেটর ব্যবহার করে ওয়ান-লাইনার
reslt = " ".join([word.title() if word not in "the a on in of an" else word for word in "Wow, a python one liner for titles".split(" ")])
print(reslt)
ভাঙ্গন:
for word in "Wow, a python one liner for titles".split(" ")
স্ট্রিংটিকে একটি তালিকায় বিভক্ত করে লুপের জন্য সূচনা করে (তালিকার বোঝার মধ্যে)
word.title() if word not in "the a on in of an" else word
title()
যদি কোনও নিবন্ধ না হয় তবে স্ট্রিং কেসের ক্ষেত্রে নেটিভ পদ্ধতি ব্যবহার করে
" ".join
(স্পেস) এর পৃথক দিয়ে তালিকার উপাদানগুলিতে যোগ দেয়
একটি গুরুত্বপূর্ণ ক্ষেত্রে যা বিবেচনা করা হচ্ছে না তা হ'ল সংক্ষিপ্ত শব্দগুলি (পাইথন-টাইটেলিকাস দ্রবণটি সংক্ষিপ্ত আকারগুলি হ্যান্ডেল করতে পারে যদি আপনি স্পষ্টভাবে ব্যতিক্রম হিসাবে তাদের সরবরাহ করেন)। আমি কেবল ডাউন-কেসিং এড়াতে পছন্দ করি। এই পদ্ধতির সাথে, ইতিমধ্যে বড় আকারের সংক্ষিপ্ত রূপগুলি উচ্চতর ক্ষেত্রে থেকে যায়। নিম্নলিখিত কোডটি মূলত ধীরোসর দ্বারা সরবরাহিত একটি সংশোধন।
# This is an attempt to provide an alternative to ''.title() that works with
# acronyms.
# There are several tricky cases to worry about in typical order of importance:
# 0. Upper case first letter of each word that is not an 'minor' word.
# 1. Always upper case first word.
# 2. Do not down case acronyms
# 3. Quotes
# 4. Hyphenated words: drive-in
# 5. Titles within titles: 2001 A Space Odyssey
# 6. Maintain leading spacing
# 7. Maintain given spacing: This is a test. This is only a test.
# The following code addresses 0-3 & 7. It was felt that addressing the others
# would add considerable complexity.
def titlecase(
s,
exceptions = (
'and', 'or', 'nor', 'but', 'a', 'an', 'and', 'the', 'as', 'at', 'by',
'for', 'in', 'of', 'on', 'per', 'to'
)
):
words = s.strip().split(' ')
# split on single space to maintain word spacing
# remove leading and trailing spaces -- needed for first word casing
def upper(s):
if s:
if s[0] in '‘“"‛‟' + "'":
return s[0] + upper(s[1:])
return s[0].upper() + s[1:]
return ''
# always capitalize the first word
first = upper(words[0])
return ' '.join([first] + [
word if word.lower() in exceptions else upper(word)
for word in words[1:]
])
cases = '''
CDC warns about "aggressive" rats as coronavirus shuts down restaurants
L.A. County opens churches, stores, pools, drive-in theaters
UConn senior accused of killing two men was looking for young woman
Giant asteroid that killed the dinosaurs slammed into Earth at ‘deadliest possible angle,’ study reveals
Maintain given spacing: This is a test. This is only a test.
'''.strip().splitlines()
for case in cases:
print(titlecase(case))
রান করার সময় এটি নিম্নলিখিতটি তৈরি করে:
CDC Warns About "Aggressive" Rats as Coronavirus Shuts Down Restaurants L.A. County Opens Churches, Stores, Pools, Drive-in Theaters
UConn Senior Accused of Killing Two Men Was Looking for Young Woman
Giant Asteroid That Killed the Dinosaurs Slammed Into Earth at ‘Deadliest Possible Angle,’ Study Reveals
Maintain Given Spacing: This Is a Test. This Is Only a Test.
re
প্রয়োজনীয়?"".split
একই কাজ করে একটি ফাংশন আছে ।