Python 将数字格式化为字符串

Python 将数字格式化为字符串,python,string,integer,format,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前面有足够的空间,以便这些空间加上5的长度与52500的长度相同。下面的过程是可行的,但是否有一种内置的方法可以做到这一点

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

不确定你到底想要什么,但这看起来很接近:

>>> 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'
:

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

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

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

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

您只需使用
%*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)

“%*s/%s%”(len(str(a)),b,a)

len(str(x))在我的系统上的速度大约是前者的两倍。阅读起来也更容易:-)是的,但这是假设你知道方程的哪一边是较长的。math.ceil(math.log(x,10))给出了10次幂的错误结果。啊,有趣。这就是为什么不应该在单个值上进行测试,而应该在边缘情况下进行测试。这正是我所需要的。
import math
num = 5
outof = 52500
formatted = '%*d/%d' % (int(math.ceil(math.log(outof, 10))), num, outof)
num = 5
outof = 52500
formatted = '%*d/%d' % (len(str(outof)), num, outof)