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

Ich möchte dieses Format verwendenPython über mehr% s in einem String

Ich liebe Apple und Tonhöhe anzuzeigen, er liebt Apfel und Tonhöhe.

Fügen Sie bitte nur zwei Variablen hinzu, aber Sie brauchen eine Möglichkeit, sie zweimal in einem Satz zu verwenden.

+7

Und bitte ** nicht ** eine Variable 'str' nennen. –

Antwort

24

ein dict verwenden:

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

Oder verwenden Sie die neuere format-Funktion, die in 2.6 eingeführt wurde:

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

Hinweis: eine Variable str Aufruf würde die integrierte Funktion str([object]) maskieren.

+0

Gibt es einen Grund, warum man 'format' anstelle von einem Wörterbuch benutzen sollte? Oder ist es nur eine Frage der persönlichen Präferenz? –

+1

Ich glaube, das '.format' [spec] (https://docs.python.org/2/library/string.html#formatspec) deckt nur mehr Fälle ab. Eine ähnliche Frage wurde hier gestellt: http://stackoverflow.com/q/5082452/89391. Meine persönliche Vorliebe ist es, '%' für die Kürze und Leistung und '.format' zu verwenden, wenn die Lesbarkeit verbessert wird. – 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.' 

Natürlich können Sie neben '1' und '2' noch andere Namen verwenden. :)

Verwandte Themen