2015-04-04 80 views
2

使用Python的str.format方法,是否有一个格式字符串只会提取数字参数的符号?Python str.format - 获取(仅)数字的符号?

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

+0

'“ - $”。join(“a -4”.split(“ - ”))'?或''-4“.replace(” - “,” - $“)'? – itzMEonTV 2015-04-04 13:17:56

回答

3

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

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

我认为你可以使用格式字符串:) – AChampion 2015-04-04 14:22:52

+0

你是作弊,你知道它:-) – Daniel 2015-04-04 14:32:02

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