examples - python format string multiple arguments
¿Python hace interpolación de variables similar a "string#{var}" en Ruby? (9)
Casi todas las otras respuestas no funcionaron para mí. Probablemente es porque estoy en Python3.5. Lo único que funcionó es:
print("Foobar is %s%s" %(''Foo'',''bar'',))
En Python, es tedioso escribir:
print "foo is" + bar + ''.''
¿Puedo hacer algo como esto en Python?
print "foo is #{bar}."
Hay una gran diferencia entre esto en Ruby:
print "foo is #{bar}."
Y estos en Python:
print "foo is {bar}".format(bar=bar)
En el ejemplo de Ruby, la bar
es evaluada.
En el ejemplo de Python, la bar
es solo una clave para el diccionario
En el caso de que solo estés usando variables, el comportamiento es más o menos el mismo, pero en general, convertir Ruby a Python no es tan simple
He aprendido la siguiente técnica de Python Essential Reference :
>>> bar = "baz"
>>> print "foo is {bar}.".format(**vars())
foo is baz.
Esto es bastante útil cuando queremos referirnos a muchas variables en la cadena de formato:
- No tenemos que repetir de nuevo todas las variables en la lista de argumentos: compárelas con los enfoques basados en argumentos de palabras clave explícitas (como
"{x}{y}".format(x=x, y=y)
y"%(x)%(y)" % {"x": x, "y": y}
). - No tenemos que marcar una por una si el orden de las variables en la lista de argumentos es consistente con su orden en la cadena de formato: compárelo con los enfoques basados en argumentos posicionales (como el
"{}{}".format(x, y)
,"{0}{1}".format(x, y)
y"%s%s" % (x, y)
).
Prefiero este enfoque porque no tienes que repetirte haciendo referencia a la variable dos veces:
alpha = 123 print ''The answer is {alpha}''.format(**locals())
Python 3.6 tendrá tiene interpolación de cadenas literales usando f-cadenas :
print(f"foo is {bar}.")
Python 3.6 ha introducido f-strings :
print(f"foo is {bar}.")
Respuesta antigua:
Desde la versión 3.2, Python tiene str.format_map
que, junto con locals()
o globals()
te permite hacerlo rápido:
Python 3.3.2+ (default, Feb 28 2014, 00:52:16)
>>> bar = "something"
>>> print("foo is {bar}".format_map(locals()))
foo is something
>>>
Python 3.6+ tiene interpolación de variables - anteponga una f
a su cadena:
f"foo is {bar}"
Para las versiones de Python debajo de esto (Python 2 - 3.5) puede usar str.format
para pasar variables:
# Rather than this:
print("foo is #{bar}")
# You would do this:
print("foo is {}".format(bar))
# Or this:
print("foo is {bar}".format(bar=bar))
# Or this:
print("foo is %s" % (bar, ))
# Or even this:
print("foo is %(bar)s" % {"bar": bar})
Si, absolutamente. Python, en mi opinión, tiene un gran soporte para el formato de cadenas, reemplazos y operadores.
Esto podría ser útil:
http://docs.python.org/library/stdtypes.html#string-formatting-operations
>>> bar = 1
>>> print "foo is {}.".format(bar)
foo is 1.