Python str.format - 获取(仅)数字的符号?
Python str.format - Get (only) the sign of a number?
使用 Python 的 str.format 方法,是否有格式字符串将仅提取数字参数的符号?
更具体地说,我需要能够分别打印符号和数字参数的其余部分,以便在它们之间插入一个字符。这可能是 space(例如,将 a -4
转换为 a - 4
)或自定义基本前缀(例如,$
表示十六进制:-
)。
不,没有特殊的格式字符串。你得自己写:
"{0}${1:02d}".format('+-'[s<0], abs(s))
仅供参考,深入了解格式化功能只需格式化即可:
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'))
+
>>> print(myformat(-100, 'x')
-
解释:
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
使用 Python 的 str.format 方法,是否有格式字符串将仅提取数字参数的符号?
更具体地说,我需要能够分别打印符号和数字参数的其余部分,以便在它们之间插入一个字符。这可能是 space(例如,将 a -4
转换为 a - 4
)或自定义基本前缀(例如,$
表示十六进制:-
)。
不,没有特殊的格式字符串。你得自己写:
"{0}${1:02d}".format('+-'[s<0], abs(s))
仅供参考,深入了解格式化功能只需格式化即可:
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'))
+
>>> print(myformat(-100, 'x')
-
解释:
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