Negative integers and string formating
Steven D'Aprano
steve at REMOVEME.cybersource.com.au
Mon Oct 23 21:44:05 EDT 2006
Problem: I have an application where I need to print integers differently
depending on whether they are positive or negative. To be more specific, I
have to print something that looks like:
"something + 1"
"something - 1"
Note the space between the sign and the number. If I didn't need that
space, I would have no problem. Yes, I do need that space.
I build the format string on the fly, then pass it to another function
which actually fills in the values. Simplified example:
def format(n):
if n > 0:
return "something positive + %(argument)d"
# real code has a good half-dozen named keys
elif n < 0:
return "something negative - %(argument)d"
else:
return "blank"
def display(**kwargs):
fs = format(kwargs['argument'])
return fs % kwargs
This works fine for positive and zero values:
>>> display(argument=0)
'blank'
>>> display(argument=1)
'something positive + 1'
but not for negative, due to the extra negative sign:
>>> display(argument=-1)
'something negative - -1'
Are there any string formatting codes that will place a space between the
sign and the number?
--
Steven
More information about the Python-list
mailing list