¿Cómo puedo completar una cadena de Python con espacios?
Quiero completar una cadena con espacios. Sé que lo siguiente funciona para cero:
>>> print("'%06d'"%4)
'000004'
¿Pero qué debo hacer cuando quiero esto?:
'hi '
Por supuesto que puedo medir la longitud de la cuerda y hacerlo str+" "*leftover
, pero me gustaría el camino más corto.
Puedes hacer esto con str.ljust(width[, fillchar])
:
Devuelve la cadena justificada a la izquierda en una cadena de largo ancho . El relleno se realiza utilizando el carácter de relleno especificado (el valor predeterminado es un espacio). La cadena original se devuelve si el ancho es menor que
len(s)
.
>>> 'hi'.ljust(10)
'hi '
Para obtener un método flexible que funcione incluso al formatear cadenas complicadas, probablemente debería utilizar el minilenguaje de formato de cadenas ,
usando cualquiera de las cuerdas f
>>> f'{"Hi": <16} StackOverflow!' # Python >= 3.6
'Hi StackOverflow!'
o el str.format()
método
>>> '{0: <16} StackOverflow!'.format('Hi') # Python >=2.6
'Hi StackOverflow!'
El método de formato de cadena te permite hacer cosas divertidas con argumentos de palabras clave anidadas. El caso más simple:
>>> '{message: <16}'.format(message='Hi')
'Hi '
Si desea pasar 16
como una variable:
>>> '{message: <{width}}'.format(message='Hi', width=16)
'Hi '
Si desea pasar variables para todo el kit y kaboodle :
'{message:{fill}{align}{width}}'.format(
message='Hi',
fill=' ',
align='<',
width=16,
)
Lo que resulta en (lo adivinaste):
'Hi '
Y para todo esto, puedes usar Python 3.6+ f-strings :
message = 'Hi'
fill = ' '
align = '<'
width = 16
f'{message:{fill}{align}{width}}'
Y por supuesto el resultado:
'Hi '
Puedes probar esto:
print("'%-100s'" % 'hi')