python - Wie man eine variable Anzahl von Argumenten zu einer Zeichenkette formatiert?

10

Wir wissen, dass das Argument one mit one %s in einer Zeichenfolge formatiert werden kann:

%Vor%

Für zwei Argumente können wir zwei %s (duh!):

verwenden %Vor%

Also, wie kann ich eine variable Anzahl von Argumenten formatieren, ohne innerhalb der Basiszeichenfolge eine Anzahl von %s gleich der Anzahl der zu formatierenden Argumente zu definieren ? es wäre sehr cool, wenn so etwas existiert:

%Vor%

Ist das überhaupt möglich oder kann ich nur etwas tun wie:

%Vor%

HINWEIS: Ich brauche , um es mit dem Operator %s string zu machen.

AKTUALISIEREN :

Es muss mit %s sein, weil eine Funktion aus einer anderen Bibliothek meine Zeichenkette unter Verwendung dieses Operators formatiert, da ich die unformatierte Zeichenkette und die Argumente zur Formatierung übergebe, aber einige Überprüfungen und Korrekturen (falls erforderlich) anlege die Argumente vor der eigentlichen Formatierung.

Also muss ich es nennen:

%Vor%

Danke für Ihre Hilfe!

    
Gerard 22.08.2013, 21:22
quelle

1 Antwort

17

Sie würden str.join() für die Liste ohne Zeichenfolgenformatierung verwenden und dann das Ergebnis interpolieren:

%Vor%

Demo:

%Vor%

Wenn einige Ihrer Argumente noch keine Zeichenfolgen sind, verwenden Sie ein Listenverständnis:

%Vor%

oder verwenden Sie map(str, ...) :

%Vor%

Sie würden das Gleiche mit Ihrer Funktion tun:

%Vor%

Wenn Sie durch eine (ziemlich willkürliche) Einschränkung eingeschränkt sind, dass Sie join nicht in der Liste der Interpolationsargumente verwenden können, verwenden Sie stattdessen join , um den Formatierungsstring zu erstellen:

%Vor%     
Martijn Pieters 22.08.2013, 21:24
quelle