将数字格式化为字符串

时间:2009-03-31 04:42:59

标签: python string integer format

如何将数字格式化为字符串,以使其前面有多个空格?我希望较短的数字5在它前面有足够的空间,以便空格加上5与52500具有相同的长度。下面的程序有效,但有没有内置的方法来做到这一点?

a = str(52500)
b = str(5)
lengthDiff = len(a) - len(b)
formatted = '%s/%s' % (' '*lengthDiff + b, a)
# formatted looks like:'     5/52500'

5 个答案:

答案 0 :(得分:8)

Format operator

>>> "%10d" % 5
'         5'
>>> 

使用*规范,字段长度可以是一个参数:

>>> "%*d" % (10,5)
'         5'
>>> 

答案 1 :(得分:2)

您可以使用%*d格式化程序来指定宽度。 int(math.ceil(math.log(x, 10)))将为您提供位数。 *修饰符使用一个数字,该数字是一个整数,表示空格的空格数。因此,通过执行'%*d'%(width,num)`,您可以指定宽度并呈现数字,而无需任何进一步的python字符串操作。

这是一个使用math.log来确定'outof'数字长度的解决方案。

import math
num = 5
outof = 52500
formatted = '%*d/%d' % (int(math.ceil(math.log(outof, 10))), num, outof)

另一个解决方案是将outof数字作为字符串转换并使用len(),如果您愿意,可以这样做:

num = 5
outof = 52500
formatted = '%*d/%d' % (len(str(outof)), num, outof)

答案 2 :(得分:2)

'%* s /%s'%(len(str(a)),b,a)

答案 3 :(得分:1)

请参阅String Formatting Operations

s = '%5i' % (5,)

您仍然需要通过包含最大长度来动态构建格式字符串:

fmt = '%%%ii' % (len('52500'),)
s = fmt % (5,)

答案 4 :(得分:0)

不确定你到底发生了什么,但看起来很接近:

>>> n = 50
>>> print "%5d" % n
   50

如果您想要更具活力,请使用rjust

之类的内容
>>> big_number = 52500
>>> n = 50
>>> print ("%d" % n).rjust(len(str(52500)))
   50

甚至:

>>> n = 50
>>> width = str(len(str(52500)))
>>> ('%' + width + 'd') % n
'   50'