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

chcę użyć tego formatu do wyświetlaniapyton o wielokrotność% s ciąg

Kocham jabłko i boiska, kocha jabłko i boiska.

Dodaj tylko dwie zmienne, ale potrzebujesz sposobu, aby użyć go dwukrotnie w jednym zdaniu.

+7

I proszę, nie ** nigdy ** wywołaj zmiennej 'str'. –

Odpowiedz

24

Użyj 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.' 

Albo użyć nowszej format funkcji, który został wprowadzony w 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' 

Uwaga: Wywoływanie zmienna str by zamaskować wbudowaną funkcję str([object]).

+0

Czy istnieje powód, dla którego należy używać formatu 'format' zamiast słownika? Czy to tylko kwestia osobistych preferencji? –

+1

Wierzę, że '.format' [spec] (https://docs.python.org/2/library/string.html#formatspec) po prostu obejmuje więcej przypadków. Podobne pytanie zadano tutaj: http://stackoverflow.com/q/5082452/89391. Moją osobistą preferencją jest użycie '%' dla zwięzłości i wydajności oraz '.format', jeśli poprawi się czytelność. – 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.' 

Oczywiście można używać innych nazw oprócz "1" i "2". :)