Python 3 hat genau diese Syntax, außer der %
Operator ist jetzt die format
Methode. str.format
wurde auch zu Python 2.6+ hinzugefügt, um den Übergang zu Python 3 zu glätten. Weitere Informationen finden Sie unter format string syntax.
>>> '{0} {1} {1}' % ('foo', 'bar')
'foo bar bar'
In älteren Python-Versionen kann dies jedoch nicht mit einem Tupel gemacht werden. Sie können sich nähern, indem Sie die in Klammern eingeschlossenen Zuordnungsschlüssel verwenden. Bei Mapping-Schlüsseln müssen die Formatwerte als Diktat anstelle eines Tupels übergeben werden.
>>> '%(0)s %(1)s %(1)s' % {'0': 'foo', '1': 'bar'}
'foo bar bar'
Von Python manual:
Wenn das rechte Argument ist ein Wörterbuch (oder andere Mapping-Typ), dann sind die Formate in der Zeichenfolge muss eine parenthesised Abbildungsschlüssel in das Wörterbuch unmittelbar nach dem eingefügten umfassen '%' Zeichen. Der Zuordnungsschlüssel wählt den zu formatierenden Wert aus dem Mapping aus.
Interessant. Warum funktioniert das mit '" str ".format (args)' aber nicht '" str "% args'? –
@Rosarch: Weil die Syntax '{n}' nur für 'str.format()' funktioniert, nicht 'str .__ mod __()'. –
@Rosarch: Ich nehme an, Sie haben den neuen Weg mit der alten Art der Formatierung gemischt, weil der alte Weg nicht '{}' als Platzhalter verwendet :), aber die '.format()' ist der neue Weg von formating strings werfen Sie einen Blick auf die pep 3101 für weitere Details: http://www.python.org/dev/peps/pep-3101/ – mouad