Estoy tratando de formatear esta línea:

print("{0:5} {1:5} {2:5} £{3:5} £{4:5}".format(GTIN,product,Quantity,indprice,finprice,))

Sin embargo, me da una salida de, con el signo de libra separado del 20 .:

46389121 chicken 2     £10.00 £   20

Quiero que haya 5 espacios entre cada variable, así:

46389121     chicken     2     £10.00     £20

¿Alguien puede detectar mi estúpido error en mi formateo?

Editar:

print("{}   {}   {}   £{}   £{}".format(GTIN,product,Quantity,indprice,finprice))


346389121   chicken   345435435   £10.00   £3454354350
46389121   chicken   2   £10.00   £20
46389121   chicken   2   £10.00   £20
46389121   chicken   23213213   £10.00   £232132130

Cuando intento números mucho más grandes, no se alinean.

2
Jospeh.MCS 29 dic. 2016 a las 21:36

3 respuestas

La mejor respuesta

Simplemente ponga los espacios en la cadena de formato

`{}     {}     {}     £{}     £{}`.format(GTIN,product,Quantity,indprice,finprice)
1
Patrick Haugh 29 dic. 2016 a las 18:48

O formatee primero sus cadenas individuales, luego str.join ellos:

GTIN = 46389121
product = 'chicken'
Quantity = 2
indprice = 10.00
finprice = 20.00

strgs = [str(GTIN), product, str(Quantity), '£{:.2f}'.format(indprice),
         '£{:.2f}'.format(indprice)]
print((5*' ').join(strgs))

De esa manera puede cambiar fácilmente la cantidad de espacios entre las cadenas individuales.

Tenga en cuenta que ':5'.format(...) puede alterar el formato deseado. 5 es aquí el espacio mínimo reservado para su entrada; Si su entrada es más corta, obtendrá más espacios entre sus datos. Si es más largo, todo está bien en su caso.

También puede 'construir' el puño de cadena de formato y luego llenarlo (lo que equivale a respuesta de Patrick Haugh):

fmt = (5*' ').join(('{}', '{}', '{}', '£{:.2f}', '£{:.2f}'))
print(fmt.format(GTIN,product,Quantity,indprice,finprice))
1
Community 23 may. 2017 a las 12:08

Debe poner un signo "<" antes del número de espacios. Por defecto, Python usa ">" como la alineación de los números, lo que agrega espacio o el símbolo de relleno a la izquierda del número. El símbolo "<" agrega el espacio a la derecha del número, que es lo que necesita

print("{0:<5} {1:<5} {2:<5} £{3:<5} £{4:<5}".format(1, 2, 3, 5, 20))
>> 1     2     3     £5     £20

print("{0:5} {1:5} {2:5} £{3:5} £{4:5}".format(1, 2, 3, 5, 20))
>>    1     2     3 £    5 £   20
1
Ivania Donoso Guzmán 29 dic. 2016 a las 19:00