2011-11-30 25 views
10

Duplicar posible:
How can I print a literal “{}” characters in python string and also use .format on it?¿Cómo puedo imprimir una cadena usando .formato(), e imprimir llaves literales alrededor de mi cadena reemplazado

Básicamente, quiero utilizar .formato(), así:

my_string = '{{0}:{1}}'.format('hello', 'bonjour') 

y tienen que coincidir:

my_string = '{hello:bonjour}' #this is a string with literal curly brackets 

Sin embargo, la primera parte del código me da un error.

Las llaves son importantes, porque estoy usando Python para comunicarme con un software a través de comandos basados ​​en texto. No tengo control sobre qué tipo de formato espera el fosoftware, por lo que es crucial que clasifique todo el formato de mi parte. Utiliza corchetes alrededor de las cadenas para garantizar que los espacios en las cadenas se interpreten como cadenas únicas, en lugar de múltiples argumentos, al igual que lo hace normalmente con las comillas en las rutas de archivos, por ejemplo.

Actualmente estoy usando el método más antiguo:

my_string = '{%s:%s}' % ('hello', 'bonjour') 

que ciertamente funciona, pero .formato() parece más fácil de leer, y cuando estoy enviando comandos con cinco o más variables de todo en una sola cuerda , entonces la legibilidad se convierte en un problema importante.

Gracias!

+1

Uso "{ {{0}: {1}}} "(doble {{) http://stackoverflow.com/questions/5466451/how-can-i-print-a-literal-characters-in-python-string-and- también-uso-format –

+0

Sí, duplicado de esa pregunta. –

Respuesta

20

Aquí es el estilo nuevo:

>>> '{{{0}:{1}}}'.format('hello', 'bonjour') 
'{hello:bonjour}' 

Pero pensando escape es un tanto difícil de leer, por lo que prefieren cambiar de nuevo al estilo antiguo para evitar escape:

>>> '{%s:%s}' % ('hello', 'bonjour') 
'{hello:bonjour}' 
Cuestiones relacionadas