Como formatar um número flutuante a uma largura fixa em Python

Como formatar um número flutuante a uma largura fixa com os seguintes requisitos:

  1. Zero inicial se n < 1
  2. Adicionar Zero(s) decimal (s) posterior (AIS) para preencher a largura fixa
  3. truncar algarismos decimais após Largura Fixa
  4. alinhar todos os pontos decimais

por exemplo:

% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print formatter.format(number)

a saída seria como

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000
Author: hobbes3, 2012-01-17

5 answers

for x in numbers:
    print "{:10.4f}".format(x)

Impressões digitais

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000
 340
Author: Sven Marnach, 2012-01-16 20:10:38

Em python3 as seguintes obras:

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4
 25
Author: Scott Roberts, 2015-05-26 04:19:30

Ver Python 3.x formatar a sintaxe do texto:

IDLE 3.5.1   
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']

for x in numbers:  
    print('{0: >#016.4f}'. format(float(x)))  

     23.2300
      0.1233
      1.0000
      4.2230
   9887.2000
 6
Author: readyleader, 2017-02-01 01:50:27

Em Python 3.

GPA = 2.5
print(" %6.1f " % GPA)

6.1f significa que, após os pontos 1 dígitos, mostrar se imprimir 2 dígitos a seguir aos pontos, só deverá %6.2f de modo que %6.3f 3 dígitos imprimam a seguir ao ponto.

 0
Author: Usman Zia, 2017-08-19 07:19:33

Tem sido um pouco seu desde que esta resposta foi dada, mas a partir do Python 3.6 (PEP498 Você poderia usar o novo f-strings:

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

Impressões Digitais:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000
 0
Author: artomason, 2018-10-04 15:08:18