diff options
author | Walter Dörwald <walter@livinglogic.de> | 2002-04-15 13:36:47 +0000 |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2002-04-15 13:36:47 +0000 |
commit | 068325ef926538a30d7feb13f9b14a6163e24b6e (patch) | |
tree | c2eef78d030be1ce7a56b56420ba13a853aab57d /Lib | |
parent | b384c7263928cc2d8dd16cac8537839673cd4982 (diff) | |
download | cpython-git-068325ef926538a30d7feb13f9b14a6163e24b6e.tar.gz |
Apply the second version of SF patch http://www.python.org/sf/536241
Add a method zfill to str, unicode and UserString and change
Lib/string.py accordingly.
This activates the zfill version in unicodeobject.c that was
commented out and implements the same in stringobject.c. It also
adds the test for unicode support in Lib/string.py back in and
uses repr() instead() of str() (as it was before Lib/string.py 1.62)
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/UserString.py | 1 | ||||
-rw-r--r-- | Lib/string.py | 14 | ||||
-rw-r--r-- | Lib/test/string_tests.py | 10 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 14 |
4 files changed, 29 insertions, 10 deletions
diff --git a/Lib/UserString.py b/Lib/UserString.py index f4f5cab96c..292e85242d 100755 --- a/Lib/UserString.py +++ b/Lib/UserString.py @@ -128,6 +128,7 @@ class UserString: def translate(self, *args): return self.__class__(self.data.translate(*args)) def upper(self): return self.__class__(self.data.upper()) + def zfill(self, width): return self.__class__(self.data.zfill(width)) class MutableString(UserString): """mutable string objects diff --git a/Lib/string.py b/Lib/string.py index d68b0bf349..cd9909e266 100644 --- a/Lib/string.py +++ b/Lib/string.py @@ -190,7 +190,10 @@ def rfind(s, *args): _float = float _int = int _long = long -_StringTypes = (str, unicode) +try: + _StringTypes = (str, unicode) +except NameError: + _StringTypes = (str,) # Convert string to float def atof(s): @@ -277,13 +280,8 @@ def zfill(x, width): """ if not isinstance(x, _StringTypes): - x = str(x) - n = len(x) - if n >= width: return x - sign = '' - if x[0] in '-+': - sign, x = x[0], x[1:] - return sign + '0'*(width-n) + x + x = repr(x) + return x.zfill(width) # Expand tabs in a string. # Doesn't take non-printing chars into account, but does understand \n. diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py index 5c8dd934c6..ea25983e76 100644 --- a/Lib/test/string_tests.py +++ b/Lib/test/string_tests.py @@ -227,6 +227,16 @@ def run_method_tests(test): test('endswith', 'ab', 0, 'ab', 0, 1) test('endswith', 'ab', 0, 'ab', 0, 0) + test('zfill', '123', '123', 2) + test('zfill', '123', '123', 3) + test('zfill', '123', '0123', 4) + test('zfill', '+123', '+123', 3) + test('zfill', '+123', '+123', 4) + test('zfill', '+123', '+0123', 5) + test('zfill', '-123', '-123', 3) + test('zfill', '-123', '-123', 4) + test('zfill', '-123', '-0123', 5) + test('zfill', '', '000', 3) test('zfill', '34', '34', 1) test('zfill', '34', '0034', 4) diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 4b77e7531e..29dd819bfa 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -206,8 +206,18 @@ if 0: test('capwords', u'abc\tdef\nghi', u'Abc Def Ghi') test('capwords', u'abc\t def \nghi', u'Abc Def Ghi') -verify(string.zfill(u'34', 1) == u'34') -verify(string.zfill(u'34', 5) == u'00034') +test('zfill', u'123', u'123', 2) +test('zfill', u'123', u'123', 3) +test('zfill', u'123', u'0123', 4) +test('zfill', u'+123', u'+123', 3) +test('zfill', u'+123', u'+123', 4) +test('zfill', u'+123', u'+0123', 5) +test('zfill', u'-123', u'-123', 3) +test('zfill', u'-123', u'-123', 4) +test('zfill', u'-123', u'-0123', 5) +test('zfill', u'', u'000', 3) +test('zfill', u'34', u'34', 1) +test('zfill', u'34', u'00034', 5) # Comparisons: print 'Testing Unicode comparisons...', |