¿Cómo puedo completar una cadena de Python con espacios?

Resuelto taper asked hace 13 años • 15 respuestas

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.

taper avatar Apr 15 '11 19:04 taper
Aceptado

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        '
Felix Kling avatar Apr 15 '2011 12:04 Felix Kling

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!'
simon avatar Apr 15 '2011 12:04 simon

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 16como 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              '
CivFan avatar Aug 13 '2014 18:08 CivFan

Puedes probar esto:

print("'%-100s'" % 'hi')
abbot avatar Apr 15 '2011 12:04 abbot