float - Formato de cadena en Python
string ascii_lowercase python 3 (9)
Quiero hacer algo como String.Format("[{0}, {1}, {2}]", 1, 2, 3)
que devuelve:
[1, 2, 3]
¿Cómo hago esto en Python?
Creo que esta combinación falta: P
"[{0}, {1}, {2}]".format(*[1, 2, 3])
Está buscando el formato de cadenas, que en python se basa en la función sprintf en C.
print "[%s, %s, %s]" % (1, 2, 3)
Para ver una referencia completa aquí: http://docs.python.org/library/stdtypes.html#string-formatting
Las respuestas anteriores usaron el formato%, que se está eliminando progresivamente en Python 3.0+. Asumiendo que está usando Python 2.6+, aquí se describe un sistema de formateo más a prueba de futuro:
http://docs.python.org/library/string.html#formatstrings
Aunque también hay funciones más avanzadas, la forma más simple termina pareciéndose mucho a lo que escribiste:
>>> "[{0}, {1}, {2}]".format(1, 2, 3)
[1, 2, 3]
No se ha formulado de manera encomiable, pero me aventuraré a adivinar que esto es lo que está buscando:
foo = "Hello"
bar = "world"
baz = 2
print "%s, %s number %d" % (foo, bar, baz)
PEP 498 que aterrizó en python 3.6
agregó interpolación literal de cadena, que es básicamente una forma abreviada de format
.
Ahora puede hacer:
f"[{1}, {2}, {3}]"
Otros usos comunes que encuentro útiles son:
pi = 3.141592653589793
today = datetime(year=2018, month=2, day=3)
num_2 = 2 # Drop assigned values in
num_3 = "3" # Call repr(), or it''s shortened form !r
padding = 5 # Control prefix padding
precision = 3 # and precision for printing
f"""[{1},
{num_2},
{num_3!r},
{pi:{padding}.{precision}},
{today:%B %d, %Y}]"""
Que producirá:
"[1,/n 2,/n ''3'',/n 3.14,/n February 03, 2018]"
Para imprimir elementos secuencialmente use {} sin especificar el índice
print(''[{},{},{}]''.format(1,2,3))
(funciona desde python 2.7 y python 3.1)
Puedes hacerlo de tres maneras:
Utiliza la impresión bonita automática de Python:
print [1, 2, 3] # Prints [1, 2, 3]
Mostrando lo mismo con una variable:
numberList = [1, 2]
numberList.append(3)
print numberList # Prints [1, 2, 3]
Use sustituciones de cadenas "clásicas" (printf de ala C). Tenga en cuenta los diferentes significados aquí de% como el especificador de formato de cadena, y el% para aplicar la lista (en realidad una tupla) a la cadena de formato. (Y tenga en cuenta que el% se usa como el operador de módulo (resto) para expresiones aritméticas).
print "[%i, %i, %i]" % (1, 2, 3)
Tenga en cuenta que si usamos nuestra variable predefinida, tendremos que convertirla en una tupla para hacer esto:
print "[%i, %i, %i]" % tuple(numberList)
Use el formato de cadena de Python 3. Esto todavía está disponible en versiones anteriores (desde 2.6), pero es la "nueva" forma de hacerlo en Py 3. Tenga en cuenta que puede usar argumentos posicionales (ordinales) o argumentos con nombre (por lo que he dicho ellos en orden inverso.
print "[{0}, {1}, {2}]".format(1, 2, 3)
Tenga en cuenta que los nombres ''uno'', ''dos'' y ''tres'' pueden ser lo que tenga sentido.)
print "[{one}, {two}, {three}]".format(three=3, two=2, one=1)
Si no sabe cuántos elementos están en la lista, este enfoque es el más universal
>>> ''[{0}]''.format('', ''.join([str(i) for i in [1,2,3]]))
''[1, 2, 3]''
Es mouch simplier para la lista de cadenas
>>> ''[{0}]''.format('', ''.join([''a'',''b'',''c'']))
''[a, b, c]''
Tienes muchas soluciones :)
forma simple (estilo C) :
print("[%i, %i, %i]" %(1, 2, 3))
Use str.format()
print("[{0}, {1}, {2}]", 1, 2, 3)
Usar str.Template()
s = Template(''[$a, $b, $c]'')
print(s.substitute(a = 1, b = 2, c = 3))
Puede leer PEP 3101 - Formato avanzado de cadenas