Issue 7008: Better document str.title and show how to work around the apostrophe problem.
This commit is contained in:
parent
6b298d6225
commit
b4b94ef437
|
@ -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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue