No busques más por todo internet porque llegaste al espacio adecuado, poseemos la solución que necesitas pero sin liarte.
Solución:
Creo que lo que estás buscando aquí es el textwrap
módulo:
user = "Username"
prefix = user + ": "
preferredWidth = 70
wrapper = textwrap.TextWrapper(initial_indent=prefix, width=preferredWidth,
subsequent_indent=' '*len(prefix))
message = "LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT " * 3
print wrapper.fill(message)
Esto imprime:
Username: LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT
Si realmente quiere usar tabulaciones en la sangría, eso es un poco más complicado, porque primero tiene que expandir tabulaciones initial_indent
para averiguar el correcto subsequent_indent
usar. Y, porque tu prefix Realmente termina con dos pestañas, es aún más complicado. Aquí está el más simple que he encontrado:
user = "Username"
prefix = user + ":tt"
expanded_indent = textwrap.fill(prefix+'$', replace_whitespace=False)[:-1]
subsequent_indent = ' ' * len(expanded_indent)
wrapper = textwrap.TextWrapper(initial_indent=prefix,
subsequent_indent=subsequent_indent)
message = "LEFTLEFTLEFTLEFTLEFTLEFTLEFT RIGHTRIGHTRIGHT " * 3
print wrapper.fill(message)
Si hace esto repetidamente, probablemente querrá envolver ese lío en una función.
Puedes usar str.ljust()
para rellenar cada línea al ancho requerido así:
line_width = 20
print "Username:".ljust(line_width) + "LEFT"*6
print "".ljust(line_width) + "RIGHT"*3
El argumento al que le pasas ljust
es la longitud que desea el string ser, siempre que esto sea consistente, las líneas deben alinearse correctamente.
Como alternativa, puede utilizar string multiplicación en líneas donde solo necesitas el relleno así:
print " "*line_width + "RIGHT"*3
Esto tendrá exactamente el mismo resultado que la última línea en el código anterior.
En Python 2, Sugiero usar formato para sangrar a la izquierda, por ejemplo:
print 'Username: :>40'.format('Foo')
print ' :>40'.format('FooBar')
Dará como resultado:
Username: Foo
FooBar
También,
print ':<30:<40'.format('UserName:','Foo')
print ':<30:<40'.format('User:','FooBar')
print ':<30:<40'.format('','FooBar42')
dará como resultado:
UserName: Foo
User: FooBar
FooBar42
Y así...
Para Python 3, use paréntesis 🙂 Además, lo mismo se puede escribir de manera más compacta usando las cadenas f: así:
print (f"'UserName:':<30'Foo':<40")
print (f"'User:':<30'FooBar':<40")
print (f"'':<30'FooBar42':<40")
también resultará en:
UserName: Foo
User: FooBar
FooBar42
Aquí tienes las comentarios y puntuaciones
Nos encantaría que puedieras dar recomendación a esta crónica si si solucionó tu problema.