multiple examples example python string-formatting string-interpolation language-comparisons

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 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})