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

Je veux utiliser ce format pour afficherpython% s multiples à propos dans une chaîne

J'adore la pomme et le pas, il aime la pomme et le pas.

Ajoutez seulement deux variables s'il vous plaît, mais besoin d'un moyen de l'utiliser deux fois en une phrase.

+7

Et s'il vous plaît ne ** jamais ** appeler une variable "str". –

Répondre

24

Utilisez un dict:

>>> 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.' 

Ou utilisez la nouvelle fonction format, qui a été introduite 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' 

Remarque: L'appel d'une str variables masquerait la fonction intégrée str([object]).

+0

Y at-il une raison pour laquelle on devrait utiliser 'format' plutôt qu'un dictionnaire? Ou est-ce juste une question de préférence personnelle? –

+1

Je crois que '.format' [spec] (https://docs.python.org/2/library/string.html#formatspec) couvre juste plus de cas. Une question similaire a été posée ici: http://stackoverflow.com/q/5082452/89391. Ma préférence personnelle est d'utiliser '%' pour la brièveté et la performance et '.format', si la lisibilité est améliorée. – 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.' 

Bien sûr, vous pouvez utiliser d'autres noms en plus de '1' et '2'. :)