definitivamente prefiero el método format
más, ya que es muy flexible y se puede extender fácilmente a sus clases personalizadas mediante la definición de __format__
o los str
o repr
representaciones . Por el simple hecho de mantenerlo simple, estoy usando print
en los siguientes ejemplos, que pueden ser reemplazados por sys.stdout.write
.
ejemplos sencillos: alineación/llenado
#Justify/ALign (left, mid, right)
print("{0:<10}".format("Guido")) # 'Guido '
print("{0:>10}".format("Guido")) # ' Guido'
print("{0:^10}".format("Guido")) # ' Guido '
podemos añadir junto a los align
especifica que son ^
, <
y >
un carácter de relleno para reemplazar el espacio por cualquier otro carácter
print("{0:.^10}".format("Guido")) #..Guido...
ejemplos Multiinput: de alineación, y llenar muchas entradas
print("{0:.<20} {1:.>20} {2:.^20} ".format("Product", "Price", "Sum"))
#'Product............. ...............Price ........Sum.........'
Ejemplos Avanzados
Si usted tiene sus clases personalizadas, se puede definir que es str
o repr
representaciones de la siguiente :
class foo(object):
def __str__(self):
return "...::4::.."
def __repr__(self):
return "...::12::.."
Ahora puede usar !s
(str) o !r
(repr) para decirle a python que llame a esos métodos definidos. Si no se define nada, Python se establece de manera predeterminada en __format__
, que también se puede sobrescribir. x = foo()
print "{0!r:<10}".format(x) #'...::12::..'
print "{0!s:<10}".format(x) #'...::4::..'
Fuente: Python Essential Reference, David M. Beazley, 4ª Edición
shweet! gracias ... tenía que ser bastante simple. umm ahora con 3 respuestas correctas simultáneas ¿quién recibe el tic verde? –