Issue 7008: Better document str.title and show how to work around the apostrophe problem.

This commit is contained in:
Raymond Hettinger 2009-09-29 18:48:09 +00:00
parent 6b298d6225
commit b4b94ef437
1 changed files with 22 additions and 2 deletions

View File

@ -1131,8 +1131,28 @@ string functions based on regular expressions.
.. method:: str.title() .. method:: str.title()
Return a titlecased version of the string: words start with uppercase Return a titlecased version of the string where words start with an uppercase
characters, all remaining cased characters are lowercase. character and the remaining characters are lowercase.
The algorithm uses a simple language-independent definition of a word as
groups of consecutive letters. The definition works in many contexts but
it means that apostrophes in contractions and possessives form word
boundaries, which may not be the desired result::
>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"
A workaround for apostrophes can be constructed using regular expressions::
>>> 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)
>>> titlecase("they're bill's friends.")
"They're Bill's Friends."
For 8-bit strings, this method is locale-dependent. For 8-bit strings, this method is locale-dependent.