Ruby ejemplo:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
La exitosa concatenación de cadenas de Python es aparentemente detallada para mí.
Ruby ejemplo:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
La exitosa concatenación de cadenas de Python es aparentemente detallada para mí.
name
es una variable local que se encuentra en la cadena, y en Python tienes que pasar explícitamente el diccionario de variables locales al formateador de cadena si quieres que las use.Respuestas:
Python 3.6 agregará una interpolación de cadena literal similar a la interpolación de cadena de Ruby. A partir de esa versión de Python (que se lanzará a finales de 2016), podrá incluir expresiones en "cadenas f", por ejemplo
Antes de 3.6, lo más cercano que puede llegar a esto es
El
%
operador se puede usar para la interpolación de cadenas en Python. El primer operando es la cadena a interpolar, el segundo puede tener diferentes tipos, incluyendo un "mapeo", mapeando los nombres de los campos a los valores a ser interpolados. Aquí utilicé el diccionario de variables localeslocals()
para asignar el nombre del camponame
a su valor como variable local.El mismo código que usa el
.format()
método de las versiones recientes de Python se vería así:También está la
string.Template
clase:fuente
%s
para una cadena y%03d
para un número rellenado con 3 dígitos con ceros a la izquierda. Podría simplemente ser escritoprint "%s has %03d" % ("Python", 2)
. Luego, el ejemplo hace uso de poner una clave de mapeo entre paréntesis después de lo%
cual es una forma de dar nombres significativos a los marcadores de posición en lugar de confiar en su orden en la cadena. Luego pasa un diccionario que asigna los nombres clave a sus valores. Es por eso que Sven está utilizando lalocals()
función que devuelve un dict que contiene todas sus variables locales para que sename
s
como tipo de conversión: Python puede convertir casi cualquier cosa en una cadena. Pero, por supuesto, perdería las capacidades especiales de formato de otros tipos de conversión.Desde Python 2.6.X es posible que desee utilizar:
fuente
%
operador para la interpolación de cadenas no está en desuso en Python 3.x. docs.python.org/dev/py3k/whatsnew/… anuncia el plan para desaprobar a%
partir de 3.1, pero esto nunca sucedió.{}
puede eliminarme.Desarrollé el paquete interpy , que permite la interpolación de cadenas en Python .
Simplemente instálelo a través de
pip install interpy
. ¡Y luego, agregue la línea# coding: interpy
al comienzo de sus archivos!Ejemplo:
fuente
La interpolación de cadenas de Python es similar a la de printf () de C
Si intentas:
La etiqueta
%s
se reemplazará con laname
variable. Debe echar un vistazo a las etiquetas de función de impresión: http://docs.python.org/library/functions.htmlfuente
print "First is %s, second is %s" % (var1, var2)
.La interpolación de cadenas se incluirá con Python 3.6 como se especifica en PEP 498 . Podrás hacer esto:
Tenga en cuenta que odio a Bob Esponja, por lo que escribir esto fue un poco doloroso. :)
fuente
También puedes tener esto
http://docs.python.org/2/library/string.html#formatstrings
fuente
#
que se imprimiera. Solo están usando la sintaxis de Ruby.#
personaje sería impreso.Uso:
PD: el rendimiento puede ser un problema. Esto es útil para scripts locales, no para registros de producción.
Duplicado:
Formato de cadena de Python:% vs.formato
¿Cuál es el equivalente de Python de incrustar una expresión en una cadena? (es decir, "# {expr}" en Ruby)
¿Cuál es el equivalente de Ruby de `s =" hola,% s de Python? % ("John", "Mary") `
¿Hay un Python equivalente a la interpolación de cadenas de Ruby?
fuente
Para el antiguo Python (probado en 2.4), la mejor solución señala el camino. Puedes hacerlo:
Y tu obtienes
fuente
Python 3.6 y posteriores tienen interpolación de cadenas literales usando cadenas f:
fuente