summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2002-03-29 16:20:33 (GMT)
committerAndrew M. Kuchling <amk@amk.ca>2002-03-29 16:20:33 (GMT)
commit102d1208a8dcf9a502a8720fe5642ee33520d84f (patch)
tree9bea10f80a15cc7a935d36fde6671b4bb77fb784
parentc6c9c4a10f2999a2fbdf1e14a207bc478a296a69 (diff)
downloadcpython-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.py16
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.