Python str.format - 获取(仅)数字的符号?

时间:2015-04-04 13:13:11

标签: python string-formatting

使用Python的str.format方法,是否有一个格式字符串只能提取数字参数的符号?

更具体地说,我需要能够分别打印符号和数字参数的其余部分,以便在它们之间插入一个字符。这可能是一个空格(例如将a -4转换为a - 4)或自定义基本前缀(例如,$表示十六进制:-$02)。

2 个答案:

答案 0 :(得分:3)

不,没有特殊的格式字符串。你必须自己写:

"{0}${1:02d}".format('+-'[s<0], abs(s))

答案 1 :(得分:0)

这纯粹是为了参考,深入研究格式化功能,只需格式化即可:

def myformat(n, base):
    fill = {'d': ' ', 'x': '$'}
    return "{:{f}=+{d}{b}}".format(n, b=base, f=fill[base], d=len(format(n, "+"+base))+1)

>>> print(myformat(100, 'd'))
+ 100
>>> print(myformat(100, 'x'))
+$64
>>> print(myformat(-100, 'x')
-$64

解释:

n = number
f = fill character
= = pad after sign
+ = show sign
d = number of digits to pad to (number of digits of n with sign + 1 for pad char)
b = integer base