2010-12-14 8 views
9
str = 'I love %s and %s, he loves %s and %s.' 

Quiero utilizar este formato para mostrarpitón sobre múltiples% s en una cadena

Me encanta la manzana y el terreno de juego, que ama la manzana y el terreno de juego.

Solo agregue dos variables, por favor, pero necesita una forma de usarlo dos veces en una frase.

+7

Y por favor no ** nunca ** llame a una variable 'str'. –

Respuesta

24

utilizar un diccionario:

>>> s = 'I love %(x)s and %(y)s, he loves %(x)s and %(y)s.' 
>>> s % {"x" : "apples", "y" : "oranges"} 
'I love apples and oranges, he loves apples and oranges.' 

O utilizar la nueva función format, que se introdujo en 2.6:

>>> s = 'I love {0} and {1}, she loves {0} and {1}' 
>>> s.format("apples", "oranges") 
'I love apples and oranges, she loves apples and oranges' 

Nota: Llamar a una variable str podría enmascarar la función incorporada str([object]).

+0

¿Hay alguna razón por la que uno deba usar 'format' en lugar de un diccionario? ¿O es solo una cuestión de preferencia personal? –

+1

Creo que el '.format' [spec] (https://docs.python.org/2/library/string.html#formatspec) solo cubre más casos. Se hizo una pregunta similar aquí: http://stackoverflow.com/q/5082452/89391. Mi preferencia personal es usar '%' para la brevedad y el rendimiento y '.format', si se mejora la legibilidad. – miku

5
>>> str = 'I love %(1)s and %(2)s, he loves %(1)s and %(2)s.' % {"1" : "apple", "2" : "pitch"} 
>>> str 
'I love apple and pitch, he loves apple and pitch.' 

Por supuesto, puede utilizar otros nombres además de '1' y '2'. :)

Cuestiones relacionadas