separar - Usar el formato de cadena de Python con listas
python separar string por caracter (6)
Construyo una cadena s
en Python 2.6.5 que tendrá un número variable de tokens %s
, que coinciden con el número de entradas en la lista x
. Necesito escribir una cadena formateada. Lo siguiente no funciona, pero indica lo que intento hacer. En este ejemplo, hay tres tokens %s
y la lista tiene tres entradas.
s = ''%s BLAH %s FOO %s BAR''
x = [''1'', ''2'', ''3'']
print s % (x)
Me gustaría que la cadena de salida sea:
1 BLAH 2 FOO 3 BAR
¡Esta fue una pregunta divertida! Otra forma de manejar esto con el método .format
para listas de longitud variable es utilizar una función que aproveche al máximo el desempaquetado de listas. En el siguiente ejemplo, no utilizo ningún formato elegante, pero puede cambiarse fácilmente para adaptarlo a sus necesidades.
list_1 = [1,2,3,4,5,6]
list_2 = [1,2,3,4,5,6,7,8]
# Create a function to easily repeat on many lists:
def ListToFormattedString(alist):
# Each item is right-adjusted, width=3
formatted_list = [''{:>3}'' for item in alist]
s = '',''.join(formatted_list)
return s.format(*alist)
# Example output:
>>>ListToFormattedString(list_1)
'' 1, 2, 3, 4, 5, 6''
>>>ListToFormattedString(list_2)
'' 1, 2, 3, 4, 5, 6, 7, 8''
Aquí hay una pequeña respuesta improvisada para usar el formato con print () en una lista.
Qué tal esto: (py3)
sample_list = [''cat'', ''dog'', ''bunny'', ''pig'']
print("Your list of animals are: {}, {}, {} and {}".format(*sample_list))
Lea los documentos aquí usando el format .
Como acabo de enterarme de esta cosa genial (indexar en listas desde una cadena de formato), voy a agregar a esta vieja pregunta.
s = ''{x[0]} BLAH {x[1]} FOO {x[2]} BAR''
x = [''1'', ''2'', ''3'']
print s.format (x=x)
Sin embargo, todavía no he descubierto cómo hacer slicing (dentro del formato de cadena ''"{x[2:4]}".format...
,) y me encantaría resolverlo si alguien tiene una idea, sin embargo, sospecho que simplemente no puedes hacer eso.
Deberías echarle un vistazo al método de format de python. A continuación, puede definir su cadena de formato de esta manera:
>>> s = ''{0} BLAH {1} BLAH BLAH {2} BLAH BLAH BLAH''
>>> x = [''1'', ''2'', ''3'']
>>> print s.format(*x)
''1 BLAH 2 BLAH BLAH 3 BLAH BLAH BLAH''
Siguiendo esta página de recursos , si la longitud de x varía, podemos usar:
'', ''.join([''%.2f'']*len(x))
para crear un marcador de posición para cada elemento de la lista x
. Aquí está el ejemplo:
x = [1/3.0, 1/6.0, 0.678]
s = ("elements in the list are ["+'', ''.join([''%.2f'']*len(x))+"]") % tuple(x)
print s
>>> elements in the list are [0.33, 0.17, 0.68]
print s % tuple(x)
en lugar de
print s % (x)