diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2002-03-29 16:20:33 (GMT) |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2002-03-29 16:20:33 (GMT) |
commit | 102d1208a8dcf9a502a8720fe5642ee33520d84f (patch) | |
tree | 9bea10f80a15cc7a935d36fde6671b4bb77fb784 | |
parent | c6c9c4a10f2999a2fbdf1e14a207bc478a296a69 (diff) | |
download | cpython-102d1208a8dcf9a502a8720fe5642ee33520d84f.zip cpython-102d1208a8dcf9a502a8720fe5642ee33520d84f.tar.gz cpython-102d1208a8dcf9a502a8720fe5642ee33520d84f.tar.bz2 |
[Bug #536241] string.zfill() produces mangled output for a Unicode string.
Walter Doerwald provided a patch, which I've modified in two ways:
1) (Uncontroversial) Removed code to make module work in earlier versions of
Python without the unicode() built-in
2) (Poss. controversial) Instead of making string.zfill take the repr()
of non-string objects, take the str().
Should a warning be added to this branch of the code so that the automatic
str() can be deprecated?
2.2.2 bugfix candidate, assuming the repr()->str() change is deemed OK.
-rw-r--r-- | Lib/string.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/Lib/string.py b/Lib/string.py index a416530..d68b0bf 100644 --- a/Lib/string.py +++ b/Lib/string.py @@ -190,7 +190,7 @@ def rfind(s, *args): _float = float _int = int _long = long -_StringType = type('') +_StringTypes = (str, unicode) # Convert string to float def atof(s): @@ -276,14 +276,14 @@ def zfill(x, width): of the specified width. The string x is never truncated. """ - if type(x) == type(''): s = x - else: s = `x` - n = len(s) - if n >= width: return s + if not isinstance(x, _StringTypes): + x = str(x) + n = len(x) + if n >= width: return x sign = '' - if s[0] in ('-', '+'): - sign, s = s[0], s[1:] - return sign + '0'*(width-n) + s + if x[0] in '-+': + sign, x = x[0], x[1:] + return sign + '0'*(width-n) + x # Expand tabs in a string. # Doesn't take non-printing chars into account, but does understand \n. |