Я хочу отформатировать число с десятичной точкой в нем с ведущими нулями.
Это
>>> '3.3'.zfill(5) 003.3
учитывает все цифры и даже десятичную точку.Есть ли в Python функция, которая рассматривает только всю часть?
Мне нужно только отформатировать простые числа с не более пяти десятичных знаков.Кроме того, использование %5f, по-видимому, рассматривает трейлинг вместо ведущих нулей.
%5f
Это то, что вы ищете?
>>> "%07.1f" % 2.11 '00002.1'
Итак, согласно вашему комментарию, я могу придумать это (хотя уже не так элегантно):
>>> fmt = lambda x : "%04d" % x + str(x%1)[1:] >>> fmt(3.1) 0003.1 >>> fmt(3.158) 0003.158
Мне нравится новый стиль форматирования.
loop = 2 pause = 2 print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause) >>>Begin Loop 2, 0002.1 Seconds Pause
В {1: 06.2f}:
Начиная со строки, как это делает ваш пример, вы можете написать маленькую функцию, например, такую, чтобы сделать то, что вы хотите:
def zpad(val, n): bits = val.split('.') return "%s.%s" % (bits[0].zfill(n), bits[1]) >>> zpad('3.3', 5) '00003.3'
Как это?
>>> '%#05.1f' % 3.3 '003.3'