mirror of
https://github.com/python/cpython.git
synced 2025-12-05 00:52:25 +00:00
[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.
This commit is contained in:
parent
c6c9c4a10f
commit
102d1208a8
1 changed files with 8 additions and 8 deletions
|
|
@ -190,7 +190,7 @@ def rfind(s, *args):
|
||||||
_float = float
|
_float = float
|
||||||
_int = int
|
_int = int
|
||||||
_long = long
|
_long = long
|
||||||
_StringType = type('')
|
_StringTypes = (str, unicode)
|
||||||
|
|
||||||
# Convert string to float
|
# Convert string to float
|
||||||
def atof(s):
|
def atof(s):
|
||||||
|
|
@ -276,14 +276,14 @@ def zfill(x, width):
|
||||||
of the specified width. The string x is never truncated.
|
of the specified width. The string x is never truncated.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if type(x) == type(''): s = x
|
if not isinstance(x, _StringTypes):
|
||||||
else: s = `x`
|
x = str(x)
|
||||||
n = len(s)
|
n = len(x)
|
||||||
if n >= width: return s
|
if n >= width: return x
|
||||||
sign = ''
|
sign = ''
|
||||||
if s[0] in ('-', '+'):
|
if x[0] in '-+':
|
||||||
sign, s = s[0], s[1:]
|
sign, x = x[0], x[1:]
|
||||||
return sign + '0'*(width-n) + s
|
return sign + '0'*(width-n) + x
|
||||||
|
|
||||||
# Expand tabs in a string.
|
# Expand tabs in a string.
|
||||||
# Doesn't take non-printing chars into account, but does understand \n.
|
# Doesn't take non-printing chars into account, but does understand \n.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue