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í.
namees 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 camponamea 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.Templateclase:fuente
%spara una cadena y%03dpara 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 senamescomo 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: interpyal 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
%sse reemplazará con lanamevariable. 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