una separar reemplazar por especiales eliminar contar concatenar comparar caracteres caracter cadenas cadena python string string-formatting pad

reemplazar - python separar string por caracter



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

¿No sería más pitónico usar rebanar?

Por ejemplo, para rellenar una cadena con espacios a la derecha hasta que tenga 10 caracteres:

>>> x = "string" >>> (x + " " * 10)[:10] ''string ''

Para rellenar con espacios a la izquierda hasta que tenga 15 caracteres:

>>> (" " * 15 + x)[-15:] '' string''

Por supuesto, esto requiere saber cuánto tiempo desea rellenar, pero no requiere medir la longitud de la cuerda con la que está comenzando.

Quiero rellenar 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, puedo medir la longitud de la cuerda y hacer str+" "*leftover , pero me gustaría el camino más corto.


+ = se puede usar para añadir a la cadena

>>> string = ''hi'' >>> for s in range(0,5): ... string += '' '' ... >>> string ''hi ''


A menos que necesite ser compatible con Python 2.5, puede (y probablemente debería) usar el mini-lenguaje de formato de cadenas , de esta manera:

''{0: <16}''.format(''Hi'')


A partir de Python 3.6 puedes hacer

>>> strng = ''hi'' >>> f''{strng: <10}''

Con interpolación de cadenas literales .

O, si su tamaño de relleno está en una variable, como esta (gracias @Matt M.!):

>>> to_pad = 10 >>> f''{strng: <{to_pad}}''


El nuevo método de formato de cadena (ish) le permite hacer cosas divertidas con argumentos de palabras clave anidadas. El caso más simple:

>>> ''{message: <16}''.format(message=''Hi'') ''Hi ''

Si quieres pasar en 16 como variable:

>>> ''{message: <{width}}''.format(message=''Hi'', width=16) ''Hi ''

Si quieres pasar variables para todo el kit y kaboodle :

''{message:{fill}{align}{width}}''.format( message=''Hi'', fill='' '', align=''<'', width=16, )

Lo que resulta en (lo has adivinado):

''Hi ''


La forma correcta de hacerlo sería utilizar la sintaxis de formato de Python como se describe en la documentación oficial.

Para este caso sería simplemente:
''{:10}''.format(''hi'')
que produce:
''hi ''

Explicación:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] fill ::= <any character> align ::= "<" | ">" | "=" | "^" sign ::= "+" | "-" | " " width ::= integer precision ::= integer type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

Casi todo lo que necesitas saber está ahí ^.

Actualización: a partir de Python 3.6 es aún más conveniente con la interpolación de cadenas literales.

foo = ''foobar'' print(f''{foo:10} is great!'') # foobar is great!


Puedes hacer esto con str.ljust(width[, fillchar]) :

Devuelva la cadena justificada a la izquierda en una cadena de ancho de longitud. El relleno se realiza utilizando el fillchar especificado (el valor predeterminado es un espacio). La cadena original se devuelve si el ancho es menor que len(s) .

>>> ''hi''.ljust(10) ''hi ''


Puedes probar esto:

print "''%-100s''" % ''hi''


Simplemente quite el 0 y agregará espacio en su lugar:

>>> print "''%6d''"%4


También puedes centrar tu cadena:

''{0: ^20}''.format(''nice'')


Use el mini formato de Python 2.7 para cadenas :

''{0: <8}''.format(''123'')

Esta izquierda se alinea y rellena a 8 caracteres con el carácter ''''.


Utilice str.ljust() :

>>> ''Hi''.ljust(6) ''Hi ''

También debe considerar string.zfill() , str.ljust() y str.center() para el formato de cadena. Estos pueden ser encadenados y tienen el carácter '' relleno '' especificado, por lo tanto:

>>> (''3''.zfill(8) + ''blind''.rjust(8) + ''mice''.ljust(8, ''.'')).center(40) '' 00000003 blindmice.... ''

Estas operaciones de formato de cadenas tienen la ventaja de trabajar en Python v2 y v3.

Eche un vistazo a pydoc str algún momento: hay una gran cantidad de cosas buenas allí.