Is there a standard way in Python to titlecase a string (i.e. words start with uppercase characters, all remaining cased characters have lowercase) but leaving articles like and
, in
, and of
lowercased?
The lower() method converts all uppercase characters in a string into lowercase characters and returns it.
upper() Return Value upper() method returns the uppercase string from the given string. It converts all lowercase characters to uppercase. If no lowercase characters exist, it returns the original string.
How do you capitalize the first letter of a string? The first letter of a string can be capitalized using the capitalize() function. This method returns a string with the first letter capitalized. If you are looking to capitalize the first letter of the entire string the title() function should be used.
In Python, the capitalize() method returns a copy of the original string and converts the first character of the string to a capital (uppercase) letter while making all other characters in the string lowercase letters.
There are a few problems with this. If you use split and join, some white space characters will be ignored. The built-in capitalize and title methods do not ignore white space.
>>> 'There is a way'.title() 'There Is A Way'
If a sentence starts with an article, you do not want the first word of a title in lowercase.
Keeping these in mind:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With