2009-08-31 98 views

Respuesta

18

Si conoce la longitud máxima de los datos en las dos columnas, puede usar los calificadores de formato. Por ejemplo, si el nombre es como máximo de 20 caracteres de largo y el precio se ajusta a 10 caracteres, se puede hacer

print "Name: %-20s Price: %10d" % (i.name, i.price) 

Esto es mejor que el uso de pestañas como las pestañas no se alinearán en algunas circunstancias (por ejemplo, si uno el nombre es bastante más largo que otro).

Si algunos nombres no caben en el espacio utilizable, puede usar el calificador de formato . para truncar los datos. Por ejemplo, usar "% -20.20s" para el formato de nombre truncará los nombres más largos para que quepan en la columna de 20 caracteres.

+0

Excelente. Otro recordatorio para mí de una función que rara vez uso en Python. Estaba teniendo este problema yo mismo antes y lo arreglé con pestañas. Ahora puedo regresar y hacer que mi código sea más fácil de leer. –

9

Como dijo Vinay, use los especificadores de formato de cadena.

Si usted no sabe las longitudes máximas, se puede encontrar al hacer una pasada adicional a través de la lista:

maxn, maxp = 0, 0 
for item in items: 
    maxn = max(maxn, len(item.name)) 
    maxp = max(maxp, len(str(item.price))) 

a continuación, utilizar '*' en lugar del número y proporcionan la anchura calculada como un argumento.

for item in items: 
    print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price) 
0

También puede utilizar los métodos de objetos str rjust()/ljust().

Cuestiones relacionadas