Home > Blockchain >  New to Python: How to keep the first letter of each word capitalized?
New to Python: How to keep the first letter of each word capitalized?

Time:08-24

I was practicing with this tiny program with the hopes to capitalize the first letter of each word in: john Smith. I wanted to capitalize the j in john so I would have an end result of John Smith and this is the code I used:

name = "john Smith"

if (name[0].islower()):
    name = name.capitalize()
print(name)

Though, capitalizing the first letter caused an output of: John smith where the S was converted to a lowercase. How can I capitalize the letter j without messing with the rest of the name?

I thank you all for your time and future responses! I appreciate it very much!!!

CodePudding user response:

As @j1-lee pointed out, what you are looking for is the title method, which will capitalize each word (as opposed to capitalize, which will capitalize only the first word, as if it was a sentence).

So your code becomes

name = "john smith"
name = name.title()
print(name) #> John Smith

CodePudding user response:

Of course you should be using str.title(). However, if you want to reinvent that functionality then you could do this:

name = 'john paul smith'
r = ' '.join(w[0].upper() w[1:] for w in name.split())
print(r)

Output:

John Paul Smith

Note:

This is not strictly equivalent to str.title() as it assumes all whitespace in the original string is replaced with a single space

  • Related