summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2009-09-26 12:35:01 (GMT)
committerEzio Melotti <ezio.melotti@gmail.com>2009-09-26 12:35:01 (GMT)
commit029625c3f6bf3a205a04f067facaae21174ef48a (patch)
treeab486b1307906c48271d8860fad6839b2b58e139
parent2dcd4c5a0f5fba4a1e34e4a902971c2e4ce7349f (diff)
downloadcpython-029625c3f6bf3a205a04f067facaae21174ef48a.zip
cpython-029625c3f6bf3a205a04f067facaae21174ef48a.tar.gz
cpython-029625c3f6bf3a205a04f067facaae21174ef48a.tar.bz2
Merged revisions 75074 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r75074 | ezio.melotti | 2009-09-26 15:33:22 +0300 (Sat, 26 Sep 2009) | 9 lines Merged revisions 75070 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r75070 | ezio.melotti | 2009-09-26 14:20:53 +0300 (Sat, 26 Sep 2009) | 1 line #7000: document "sep" in capwords. Add a few tests ........ ................
-rw-r--r--Doc/library/string.rst14
-rw-r--r--Lib/string.py10
-rw-r--r--Lib/test/test_string.py3
3 files changed, 17 insertions, 10 deletions
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index 2fd70be9..ae068a9 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -565,12 +565,14 @@ rule:
Helper functions
----------------
-.. function:: capwords(s)
-
- Split the argument into words using :func:`split`, capitalize each word using
- :func:`capitalize`, and join the capitalized words using :func:`join`. Note
- that this replaces runs of whitespace characters by a single space, and removes
- leading and trailing whitespace.
+.. function:: capwords(s[, sep])
+
+ Split the argument into words using :meth:`str.split`, capitalize each word
+ using :meth:`str.capitalize`, and join the capitalized words using
+ :meth:`str.join`. If the optional second argument *sep* is absent
+ or ``None``, runs of whitespace characters are replaced by a single space
+ and leading and trailing whitespace are removed, otherwise *sep* is used to
+ split and join the words.
.. function:: maketrans(frm, to)
diff --git a/Lib/string.py b/Lib/string.py
index e071a2d..a9898e8 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -29,15 +29,17 @@ printable = digits + ascii_letters + punctuation + whitespace
# Capitalize the words in a string, e.g. " aBc dEf " -> "Abc Def".
def capwords(s, sep=None):
- """capwords(s, [sep]) -> string
+ """capwords(s [,sep]) -> string
Split the argument into words using split, capitalize each
word using capitalize, and join the capitalized words using
- join. Note that this replaces runs of whitespace characters by
- a single space.
+ join. If the optional second argument sep is absent or None,
+ runs of whitespace characters are replaced by a single space
+ and leading and trailing whitespace are removed, otherwise
+ sep is used to split and join the words.
"""
- return (sep or ' ').join([x.capitalize() for x in s.split(sep)])
+ return (sep or ' ').join(x.capitalize() for x in s.split(sep))
# Construct a translation map for bytes.translate
diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py
index 743fa6b..b495d69 100644
--- a/Lib/test/test_string.py
+++ b/Lib/test/test_string.py
@@ -22,6 +22,9 @@ class ModuleTest(unittest.TestCase):
self.assertEqual(string.capwords('ABC DEF GHI'), 'Abc Def Ghi')
self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi')
self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi')
+ self.assertEqual(string.capwords(' aBc DeF '), 'Abc Def')
+ self.assertEqual(string.capwords('\taBc\tDeF\t'), 'Abc Def')
+ self.assertEqual(string.capwords('\taBc\tDeF\t', '\t'), '\tAbc\tDef\t')
def test_formatter(self):
fmt = string.Formatter()