স্ট্রিংয়ে প্রতিটি শব্দের প্রথম অক্ষরকে কীভাবে মূলধন করা যায়?


586
s = 'the brown fox'

... এখানে কিছু করুন ...

s হতে হবে :

'The Brown Fox'

এটি করার সবচেয়ে সহজ উপায় কী?

উত্তর:


985

.title()একটি স্ট্রিং (হয় হওয়া ASCII বা ইউনিকোড হয় জরিমানা) এর পদ্ধতি এই আছে:

>>> "hello world".title()
'Hello World'
>>> u"hello world".title()
u'Hello World'

যাইহোক, এম্বেড থাকা এস্ট্রোফেসগুলি সহ স্ট্রিংগুলি সন্ধান করুন, যেমন ডক্সে উল্লিখিত হয়েছে।

অ্যালগরিদম একটানা অক্ষরের গ্রুপ হিসাবে শব্দের একটি সহজ ভাষা-স্বতন্ত্র সংজ্ঞা ব্যবহার করে। সংজ্ঞাটি অনেক প্রসঙ্গে কাজ করে তবে এর অর্থ হ'ল সংকোচনগুলিতে অ্যাড্রোফেসগুলি শব্দ সীমানা গঠন করে, যা পছন্দসই ফলাফল নাও হতে পারে:

>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"

56
আমি " ".join(w.capitalize() for w in s.split())
mehtunguh

3
এটি বেশিরভাগ স্ট্রিংয়ের জন্য নিরাপদ নয় কারণ প্রতিটি শব্দ এমনকি অধিকারীও বড় আকারের হয়ে যায়।

10
স্ট্রিং.টাইটেল () নিয়ে সমস্যা আছে। আপনি যখন ব্যবহার করবেন, উদাহরণস্বরূপ, "e g 3b"পছন্দসই ফলাফল হবে "E G 3b"। তবে, "e g 3b".title()রিটার্ন "E G 3B"
সেরেন

7
মনে রাখবেন যে In [2]: 'tEst'.title() Out[2]: 'Test'
এটির ফলেও এটি ঘটবে

4
দুর্দান্ত উত্তর এবং মন্তব্যগুলি হাইলাইট করে যে অজগরটিতে সবকিছু আপনার প্রয়োজন মতো আচরণ করে না, তবে এটি করার পক্ষে সবসময় সুবিধাজনক উপায় রয়েছে। সর্বাধিক সুবিধাজনক উপায়ে প্রায়শই পাইথন-টাইটেলিকেস
অ্যারোন 3468

189

.title()পদ্ধতি ভাল কাজ করতে পারে না,

>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"

string.capwords()পদ্ধতি চেষ্টা করুন ,

import string
string.capwords("they're bill's friends from the UK")
>>>"They're Bill's Friends From The Uk"

ক্যাপওয়ার্ডগুলিতে পাইথন ডক্স থেকে :

স্ট্রিং স্প্লিট () ব্যবহার করে যুক্তিগুলিকে শব্দের মধ্যে বিভক্ত করুন, প্রতিটি শব্দকে স্ট্র্যাপএপিটালাইজ () ব্যবহার করে মূলধন করুন এবং স্ট্রিয়রজাইন () ব্যবহার করে মূলধরনের শব্দগুলিতে যোগ করুন। Alচ্ছিক দ্বিতীয় আর্গুমেন্টের সেপটি অনুপস্থিত বা কোনও নয়, শ্বেতস্পেসের অক্ষরগুলির একক স্থান দ্বারা প্রতিস্থাপন করা হয় এবং নেতৃস্থানীয় এবং অনুসরণকারী শ্বেতস্পেস সরানো হয়, অন্যথায় সেপ শব্দের বিভক্ত হয়ে যোগ দিতে ব্যবহৃত হয়।


2
ক্যাপওয়ার্ডগুলির এখনও অভাব রয়েছে এবং এর মতো কিছু পরিচালনা করে না "There once was a string with an 'that had words right after it and then closed'"। এই উদাহরণের সাথে বাদে সমস্ত পৃথিবী thatপ্রত্যাশার মতো মূলধন হয়ে থাকে। ফলাফল হচ্ছে"There Once Was A String With An 'that Had Words Right After It And Then Closed'"
devonbleibtrey

তবুও, এটি title()সাধারণ পরিস্থিতির চেয়ে ভাল কাজ করে । আমার পরিস্থিতিতে, title()অ্যাকসেন্টস বা ডায়ারেসিস সহ নামেরগুলির জন্য খারাপ আউটপুট দেয়, যখন capwords()এটি সঠিকভাবে পরিচালনা করে।
হিউক্রস

ভাল, তবে এটি "ইউকে / ইউকে" পার্থক্যটি
মিস করে

104

এই ধরণের জিনিসটি আমার কাছে মজাদার কারণ, এখানে আরও দুটি সমাধান।

শব্দের মধ্যে বিভক্ত করুন, বিভক্ত দলগুলি থেকে প্রতিটি শব্দকে প্রাথমিক ক্যাপ করুন এবং আবার যোগদান করুন। এটি শব্দের পৃথক করে একটি একক সাদা স্পেসে সাদা স্থান পরিবর্তন করবে, তা সে যাই হোক না কেন।

s = 'the brown fox'
lst = [word[0].upper() + word[1:] for word in s.split()]
s = " ".join(lst)

সম্পাদনা: উপরের কোডটি লেখার সময় আমি কী ভাবছিলাম তা মনে নেই, তবে সুস্পষ্ট তালিকা তৈরি করার দরকার নেই; অলস ফ্যাশনে এটি করার জন্য আমরা একটি জেনারেটর এক্সপ্রেশন ব্যবহার করতে পারি। সুতরাং এখানে একটি ভাল সমাধান:

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())

স্ট্রিংয়ের শুরুর সাথে মিলে বা নিয়মিত সাদা স্থান পৃথক শব্দের সাথে একটি একক অ-হোয়াইটস্পেস অক্ষর ব্যবহার করতে একটি নিয়মিত অভিব্যক্তি ব্যবহার করুন; "ম্যাচ গ্রুপ" চিহ্নিত করতে প্রথম বন্ধনী ব্যবহার করুন। কোনও ফাংশন লিখুন যা কোনও ম্যাচ অবজেক্ট নিয়ে যায় এবং সাদা স্থানের ম্যাচ গ্রুপটি অপরিবর্তিত এবং উচ্চ-ক্ষেত্রে সাদা-স্থানের অক্ষরের সাথে মিলিত গোষ্ঠীটি প্রদান করে। তারপরে re.sub()নিদর্শনগুলি প্রতিস্থাপন করতে ব্যবহার করুন । এটির মধ্যে প্রথম দ্রবণের বিরামচিহ্ন সমস্যা নেই বা এটি আমার প্রথম সমাধানের মতো শ্বেত স্থানটিকে আবারও করতে পারে না। এই এক সেরা ফলাফল উত্পাদন করে।

import re
s = 'the brown fox'

def repl_func(m):
    """process regular expression match groups for word upper-casing problem"""
    return m.group(1) + m.group(2).upper()

s = re.sub("(^|\s)(\S)", repl_func, s)


>>> re.sub("(^|\s)(\S)", repl_func, s)
"They're Bill's Friends From The UK"

আমি এই উত্তরটি গবেষণা করে আনন্দিত। আমার কোনও ধারণা ছিল না যা কোনও re.sub()ফাংশন নিতে পারে! আপনি re.sub()চূড়ান্ত ফলাফল উত্পাদন করতে ভিতরে অনানুক্রমিক প্রক্রিয়াজাতকরণ করতে পারেন !


1
স্লাইস ব্যবহার করে সমাধানের জন্য +1। আমার এমন কিছু দরকার ছিল যা বাকী শব্দের মূলধনকে পরিবর্তন না করেই প্রথম অক্ষরকে মূলধন করে তোলে (যেমন ফু ফু হয়ে যায়, তবে এফইওইউ ওফইও হয়ে যায়)। এটি নিখুঁত ছিল।
টমনিস্টভোল্ড


@ ভানুয়ান, আপনি ঠিক বলেছেন! ডক স্ট্রিংয়ের বর্ণনাটি আমাকে ভাবতে পেরেছিল যে এটি করা সমস্তই প্রথম অক্ষরের মূলধন ছিল, তবে এটি আসলে কী করে তা সম্পর্কে আপনি সঠিক। আমি উত্তরটি সম্পাদনা করব। মাথা উত্তলনের জন্য ধন্যবাদ.
স্টিভাহ

string.capwordsচেন হউউউর উত্তর নথিভুক্ত অনুসারে এটি যা ঘটে তা উপস্থিত হয় ।
অ্যাড্রিয়ান কেস্টার

1
উপরের উত্তরে লক্ষ করার মতো কিছু, s.split () ব্যবহারের পরিবর্তে, আমি মনে করি যে এস.স্প্লিট ('') ব্যবহার করা ভাল। এর কারণ ইনসেসের স্ট্রিংটিতে কিছু দ্বিগুণ স্থান রয়েছে এবং আপনি যোগদানের ক্ষেত্রে সেই দ্বিগুণ স্থানগুলি বজায় রাখতে চান, s.plit ('') আপনাকে স্পেসগুলি বজায় রাখতে সহায়তা করবে যখন এস স্প্লিট () পাবে না
মানপিকিন

21

এটি করার বিভিন্ন উপায়ের সংক্ষিপ্তসার এখানে, তারা এই সমস্ত ইনপুটগুলির জন্য কাজ করবে:

""           => ""       
"a b c"      => "A B C"             
"foO baR"    => "FoO BaR"      
"foo    bar" => "Foo    Bar"   
"foo's bar"  => "Foo's Bar"    
"foo's1bar"  => "Foo's1bar"    
"foo 1bar"   => "Foo 1bar"     

- সবচেয়ে সহজ সমাধানটি হ'ল বাক্যকে শব্দের মধ্যে বিভক্ত করা এবং প্রথম অক্ষরকে মূলধন দিয়ে তারপরে আবার যুক্ত করুন:

# Be careful with multiple spaces, and empty strings
# for empty words w[0] would cause an index error, 
# but with w[:1] we get an empty string as desired
def cap_sentence(s):
  return ' '.join(w[:1].upper() + w[1:] for w in s.split(' ')) 

- আপনি যদি প্রথমে শব্দগুলিতে ইনপুট স্ট্রিংটি বিভক্ত করতে চান না এবং অভিনব জেনারেটর ব্যবহার করে:

# Iterate through each of the characters in the string and capitalize 
# the first char and any char after a blank space
from itertools import chain 
def cap_sentence(s):
  return ''.join( (c.upper() if prev == ' ' else c) for c, prev in zip(s, chain(' ', s)) )

- অথবা ইটারটুলগুলি আমদানি না করে:

def cap_sentence(s):
  return ''.join( (c.upper() if i == 0 or s[i-1] == ' ' else c) for i, c in enumerate(s) )

- বা আপনি স্টিভার উত্তর থেকে নিয়মিত প্রকাশ করতে পারেন :

# match the beginning of the string or a space, followed by a non-space
import re
def cap_sentence(s):
  return re.sub("(^|\s)(\S)", lambda m: m.group(1) + m.group(2).upper(), s)

এখন, এগুলি পোস্ট করা হয়েছিল এমন আরও কিছু উত্তর এবং ইনপুটগুলি যার জন্য তারা প্রত্যাশার মতো কাজ করে না যদি আমরা কোনও শব্দের সংজ্ঞা শূন্যের পরে বা কোনও ফাঁকা জায়গার পরে ব্যবহার করি:

  return s.title()

# Undesired outputs: 
"foO baR"    => "Foo Bar"       
"foo's bar"  => "Foo'S Bar" 
"foo's1bar"  => "Foo'S1Bar"     
"foo 1bar"   => "Foo 1Bar"      

  return ' '.join(w.capitalize() for w in s.split())    
  # or
  import string
  return string.capwords(s)

# Undesired outputs:
"foO baR"    => "Foo Bar"      
"foo    bar" => "Foo Bar"      

বিভাজনের জন্য '' ব্যবহার করা দ্বিতীয় আউটপুট ঠিক করবে, তবে ক্যাপওয়ার্ডগুলি () এখনও প্রথমটির জন্য কাজ করবে না

  return ' '.join(w.capitalize() for w in s.split(' '))    
  # or
  import string
  return string.capwords(s, ' ')

# Undesired outputs:
"foO baR"    => "Foo Bar"      

একাধিক ফাঁকা জায়গাগুলি সম্পর্কে সতর্কতা অবলম্বন করুন

  return ' '.join(w[0].upper() + w[1:] for w in s.split())
# Undesired outputs:
"foo    bar" => "Foo Bar"                 

একটি সামগ্রিক সংক্ষিপ্তসার জন্য +1। আমি কেবল একটি সংখ্যার (প্রতিটি শব্দ নয়) অনুসরণ করে একটি শব্দকে মূলধন করার উপায় খুঁজছি। আপনি কি নিজের উত্তরের সাথে এটি যুক্ত করতে পারেন যা এটি প্রদর্শন করে? উদাহরণস্বরূপ , lower 123 upperফিরে আসা উচিত lower 123 Upper, যেখানে upperএটি একটি সংখ্যার অনুসরণ করে মূলধন হয়। আমি জানি এটি ওপি-র প্রশ্নের পরিধি ছাড়িয়ে গেছে তবে আপনার ইতিমধ্যে বিস্তৃত উত্তরের একটি চমৎকার অ্যাড-অন। আগাম ধন্যবাদ.
প্রোগ্রামার

এই ক্ষেত্রে আপনার প্রয়োজন অনুসারে আপনি উপরের কয়েকটি পদ্ধতিতে পরিবর্তন করতে পারেন। তবে, আমি এটিকে উত্তরের অংশ হিসাবে যুক্ত করব না কারণ এটি বেশিরভাগ লোক সন্ধান করছে না। আমি এটির জন্য রেজেক্স সংস্করণটি ব্যবহার করব এবং এর "([0-9]+)(\s+.)"পরিবর্তে "(^|\s)(\S)"(এক বা একাধিক সংখ্যার সাথে মিলিত হবো , তারপরে এক বা একাধিক স্পেস এবং তারপরে যেকোনো চর) বা "([0-9]+)(\s*.)"যদি আপনি 'শূন্য বা তার বেশি' স্পেস পরে অক্ষরটি বড় করতে চান তবে সংখ্যা
aljgom

আমি এটি সুনিশ্চিত করব, যা অন্য একটি বিশেষ কেস সম্পর্কে আমার চিন্তাভাবনা তৈরি করেছিল: আপনি উপরের স্নিপেটগুলিকে কীভাবে স্ট্রিং, যেমন WW1 - the great warএবং WW1 - The Great Warপরিবর্তে আউটপুট নিতে পরিবর্তন করবেন Ww1 ...। সংক্ষেপে সমস্যাটি দেখুন? আপনি কি এমন কিছু যুক্ত করতে ইচ্ছুক যা এই কেসটি দেখায়? আমি এই সম্পর্কে কিছুক্ষণের জন্য ভাবছিলাম এবং এটি করার কোনও উপায় ভাবতে পারি না।
প্রোগ্রামার

উপরে বর্ণিত প্রথম পদ্ধতিগুলি ইতিমধ্যে ইনপুট স্ট্রিংয়ে মূলধনযুক্ত অক্ষরগুলিকে পরিবর্তন করে না, সুতরাং WW1আউটপুটটি হবেWW1
aljgom

15

@ জিবেরিয়া আনসারের কপি-পেস্ট-রেডি সংস্করণ:

def capitalize(line):
    return ' '.join(s[:1].upper() + s[1:] for s in line.split(' '))

2
তালিকা তৈরি করার দরকার নেই। str.joinজেনারেটর গ্রহণ করে।
ওয়ারওয়ারিচ

@warvariuc আপনি এই কোডটি কীভাবে জেনারেটরগুলিতে পরিবর্তন করবেন?
কনস্ট্যান্টিন স্পিরিন

1
স্কয়ার বন্ধনীগুলি সরিয়ে ফেলুন, যেমন এটি এখানে হয়ে গেছে
ওয়ার্ভারিও

1
যদিও @warvaric উল্লেখ করে নিখুঁত যে joinজেন এক্সপস গ্রহণ str.joinকরে, বিশেষত ক্ষেত্রে এটি সাধারণত তালিকা বোঝার জন্য পছন্দ করা হয়। কারণ joinআর্গুমেন্টের দ্বিগুণ পুনরুক্তি হয় এবং তাই কোনও জেনারেটরের পরিবর্তে প্রস্তুত-প্রস্তুত তালিকাগুলি সরবরাহ করা আরও দ্রুত।
Bhargav রাও

1
@ ভরগাভআআআআআআআআআআআআআআআআআআআআআআআআআশলশনে দ্বিগুনের str.joinপুনরাবৃত্তি করতে হবে কেন ? আমি শুধু পরীক্ষা করেছিলাম - এটি হয় না। যদিও ছোট সিকোয়েন্সের জন্য তালিকাটি উপলব্ধি দ্রুততর।
ওয়ারওয়ারিয়াক

12

যখন সমাধানটি সহজ এবং নিরাপদ হয় তখন আপনি কেন নিজের জীবন যোগদানের সাথে এবং লুপগুলিতে জটিল করেন?

শুধু এটি করুন:

string = "the brown fox"
string[0].upper()+string[1:]

2
কারণ বেশ কয়েকটি শব্দ থাকতে পারে।
আর্নৌড

1
হ্যাঁ, তবে প্রায়শই আমি কেবল প্রথম চিঠিটি মূলধন করতে চাই। এটি এটি করার একটি উপায়।
ডিলিট

1
আপনি কি শুধু ব্যবহার করবেন না "the brown fox".capitalize()?
ভাগ্যডোনাল্ড

2
@ লাকিডোনাল্ড কারণ সম্ভবত আমি 'this is John'রূপান্তর করতে চাই না 'This is john'
janek37

এটি করার সহজ উপায় না string.capitalize()(মূলত @ লকাইডোনাল্ডস প্রতিধ্বনিত)
হাসান

10

Str.title () যদি আপনার পক্ষে কাজ না করে তবে নিজেই মূলধনটি করুন।

  1. শব্দের তালিকায় স্ট্রিংটি বিভক্ত করুন
  2. প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করুন
  3. শব্দগুলিকে একক স্ট্রিংয়ে যুক্ত করুন

এক রৈখিক:

>>> ' '.join([s[0].upper() + s[1:] for s in "they're bill's friends from the UK".split(' ')])
"They're Bill's Friends From The UK"

সুস্পষ্ট উদাহরণ:

input = "they're bill's friends from the UK"
words = input.split(' ')
capitalized_words = []
for word in words:
    title_case_word = word[0].upper() + word[1:]
    capitalized_words.append(title_case_word)
output = ' '.join(capitalized_words)

1
এই সমাধানটির সাথে আগ্রহের একটি বিষয় হ'ল আপনি কোনও বিশেষ শ্বেতস্থান হারাবেন। প্রসঙ্গের উপর নির্ভর করে গুরুত্বপূর্ণ হতে পারে না।
mklauber

8

কেবল যদি আপনি প্রথম অক্ষর চান:

>>> 'hello world'.capitalize()
'Hello world'

তবে প্রতিটি শব্দকে মূলধন করতে:

>>> 'hello world'.title()
'Hello World'

সাবধান হন কারণ 'hello New York'.capitalize()হল'Hello new york'
user2314737

5

আপনি [1:] অ্যাক্সেস করলে একটি খালি স্ট্রিং একটি ত্রুটি বাড়িয়ে তুলবে, সুতরাং আমি এটি ব্যবহার করব:

def my_uppercase(title):
    if not title:
       return ''
    return title[0].upper() + title[1:]

প্রথম অক্ষরের বড় হাতের অক্ষর।


এটা কি str.capitalizeজন্য নয়?
ইউজিন পাখোমভ

4
@ ইউজিন, হ্যাঁ তবে দুর্ভাগ্যক্রমে, অন্য সমস্ত বর্ণকে ছোট হাতের অক্ষরে রাখুন যা সম্ভবত পছন্দসই নয়। : /
উইম ফেইজেন


3

মার্ক নির্দেশিত হিসাবে আপনার ব্যবহার করা উচিত .title():

"MyAwesomeString".title()

তবে, যদি একটি জাঙ্গো টেমপ্লেটের অভ্যন্তরে প্রথম অক্ষরের বড় হাতের অক্ষর তৈরি করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

{{ "MyAwesomeString"|title }}

বা একটি ভেরিয়েবল ব্যবহার:

{{ myvar|title }}

3

প্রস্তাবিত পদ্ধতি str.title () সমস্ত ক্ষেত্রে কাজ করে না। উদাহরণ স্বরূপ:

string = "a b 3c"
string.title()
> "A B 3C"

পরিবর্তে "A B 3c"

আমি মনে করি, এটির মতো কিছু করা ভাল:

def capitalize_words(string):
    words = string.split(" ") # just change the split(" ") method
    return ' '.join([word.capitalize() for word in words])

capitalize_words(string)
>'A B 3c'

1
তবে ত্রুটি দেখা দিতে পারে যদি তাদের পৃথক করার জায়গাগুলির সংখ্যা 1 না হয় তবে রেফারেন্সের জন্য: হ্যাকারঙ্ক সমস্যা
দিবাকর রাজেশ

3

যদিও সমস্ত উত্তর ইতিমধ্যে সন্তোষজনক তবে আমি পূর্বের সমস্ত ক্ষেত্রে 2 টি অতিরিক্ত কেস কভার করার চেষ্টা করব।

যদি স্থানগুলি অভিন্ন না হয় এবং আপনি একই বজায় রাখতে চান

string = hello    world i  am    here.

যদি সমস্ত স্ট্রিং বর্ণমালা থেকে শুরু না হয়

string = 1 w 2 r 3g

এখানে আপনি এটি ব্যবহার করতে পারেন

def solve(s):
    a = s.split(' ')
    for i in range(len(a)):
        a[i]= a[i].capitalize()
    return ' '.join(a)

এই আপনাকে দেবে

output = Hello    World I  Am    Here
output = 1 W 2 R 3g

আমি আশা করি এটি অনর্থক নয়।


2
অ-ইউনিফর্ম স্পেসের ক্ষেত্রে তুলে ধরার জন্য ধন্যবাদ Thanks উপরের কিছু উত্তর s.split ('') এর পরিবর্তে s.split () ব্যবহার করে। এটি লক্ষণীয় যে অ-অভিন্ন স্থানের জন্য, s.split ('') ব্যবহার করে অ-ইউনিফর্ম স্পেসগুলি বজায় রাখা নিশ্চিত হবে! আবার ধন্যবাদ
মনপিকিন

এটি পুরোপুরি অসম স্পেস বা শব্দের জন্য কিছু অঙ্ক দিয়ে শুরু করে। ধন্যবাদ :)
অমরেশ গিরি

2

শব্দ মূলধন করতে ...

str = "this is string example....  wow!!!";
print "str.title() : ", str.title();

@ গ্যারি0২১২7 মন্তব্য, নীচে অ্যাডাস্ট্রোফ সহ সমাধানের শিরোনাম

import re

def titlecase(s):
    return re.sub(r"[A-Za-z]+('[A-Za-z]+)?", lambda mo: mo.group(0)[0].upper() + mo.group(0)[1:].lower(), s)

text = "He's an engineer, isn't he? SnippetBucket.com "
print(titlecase(text))

বিদ্যমান ফাংশন ব্যবহার অজগরটিতে দ্রুত কার্যকরকরণ দেয়।
তেজাস ট্যাঙ্ক

আমি শিরোনাম () এর অত্যধিক অনুরাগী নই, কারণ এটি অ্যাডাস্ট্রোফগুলি পরিচালনা করে না। "আমি বলতে পারি না" .title () "আমি বলতে পারি না" দেয়
গ্যারি02127

@ গ্যারি0২১২7 আমার উত্তর আপডেট হয়েছে, দয়া করে একবার দেখুন, আপনার সমস্যার ডোমেনের সাথেও নিখুঁতভাবে কাজ করেছেন
তেজাস ট্যাঙ্ক

1

সাদা স্থান সংরক্ষণ উপেক্ষা করবেন না। আপনি যদি প্রক্রিয়া করতে চান 'fred flinstone'এবং 'Fred Flinstone'পরিবর্তে পেতে চান তবে আপনি 'Fred Flinstone'নিজের সাদা স্থানটিকে দূষিত করেছেন। উপরের সমাধানগুলির কয়েকটি সাদা স্থান হারাবে। পাইথন 2 এবং 3 এর পক্ষে ভাল এবং সাদা স্থান সংরক্ষণ করে এমন একটি সমাধান এখানে।

def propercase(s):
    return ''.join(map(''.capitalize, re.split(r'(\s+)', s)))

0

পাইথন 3 এর জন্য একটি দ্রুত ফাংশন কাজ করেছিল

Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> capitalizeFirtChar = lambda s: s[:1].upper() + s[1:]
>>> print(capitalizeFirtChar('помните своих Предковъ. Сражайся за Правду и Справедливость!'))
Помните своих Предковъ. Сражайся за Правду и Справедливость!
>>> print(capitalizeFirtChar('хай живе вільна Україна! Хай живе Любовь поміж нас.'))
Хай живе вільна Україна! Хай живе Любовь поміж нас.
>>> print(capitalizeFirtChar('faith and Labour make Dreams come true.'))
Faith and Labour make Dreams come true.

0

অ-ইউনিফর্ম স্পেস সহ স্ট্রিং মূলধন করুন

ঠিক আছে, আমি বুঝতে পেরেছি এটি একটি পুরানো প্রশ্ন এবং সম্ভবত উত্তরগুলি প্রায় ক্লান্ত হয়ে পড়েছে, তবে আমি @ অমিত গুপ্তের অ-অভিন্ন জায়গাগুলি যুক্ত করতে চাই। মূল প্রশ্ন থেকে, আমরা স্ট্রিংয়ের প্রতিটি শব্দকে মূলধন করতে চাই s = 'the brown fox'। স্ট্রিংটি s = 'the brown fox'অ-ইউনিফর্ম স্পেস সহ হলে কী হবে ।

def solve(s):
    # if you want to maintain the spaces in the string, s = 'the brown      fox'
    # use s.split(' ') instead of s.split(). 
    # s.split() returns ['the', 'brown', 'fox']
    # while s.split(' ') returns ['the', 'brown', '', '', '', '', '', 'fox']
    capitalized_word_list = [word.capitalize() for word in s.split(' ')]
    return ' '.join(capitalized_word_list)

.. আপনার কোডটি যদি ব্রাউন এবং শিয়ালের মধ্যে
শ্বেত স্থান

-1

** আপনি কমে যেতে চাইলে **

 #Assuming you are opening a new file   
 with open(input_file) as file:
     lines = [x for x in reader(file) if x]
 #for loop to parse the file by line
 for line in lines:
           name = [x.strip().lower() for x in line if x]
           print(name) #check the result

-2

আমি এই উত্তরটি সত্যিই পছন্দ করি:

@ জিবেরিয়া আনসারের কপি-পেস্ট-রেডি সংস্করণ:

def capitalize(line):
    return ' '.join([s[0].upper() + s[1:] for s in line.split(' ')])

তবে কিছু লাইন যা আমি প্রেরণ করছিলাম কিছু ফাঁকা অক্ষরগুলি বিভক্ত হয়ে গিয়েছিল যা এর চেষ্টা করার সময় ত্রুটি ঘটেছে [1:]। এটি করার সম্ভবত আরও ভাল উপায় আছে তবে আমাকে যেমনটি হিসাবে লেন (গুলি)> 0 তে যুক্ত করতে হয়েছিল

return ' '.join([s[0].upper() + s[1:] for s in line.split(' ') if len(s)>0])

2
এটি অত্যধিক জটিল, আপনি এমনকি দৈর্ঘ্য পরীক্ষা করতে চান ?! অদক্ষ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.