En Python, es tedioso escribir:
print "foo is" + bar + '.'
¿Puedo hacer algo como esto en Python?
print "foo is #{bar}."
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})
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 >>>
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:
"{x}{y}".format(x=x, y=y)
y "%(x)%(y)" % {"x": x, "y": y}
). "{}{}".format(x, y)
, "{0}{1}".format(x, y)
y "%s%s" % (x, y)
). Formato de cadena
>>> bar = 1 >>> print "foo is {}.".format(bar) foo is 1.
Prefiero este enfoque porque no tienes que repetirte haciendo referencia a la variable dos veces:
alfa = 123 Imprimir 'La respuesta es {alfa}'. Formato (** locals ())
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
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
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',))