Ich konstruiere eine Zeichenfolge s
in Python 2.6.5, die eine unterschiedliche Anzahl von %s
Token enthält, die der Anzahl der Einträge in der Liste entsprechen x
. Ich muss eine formatierte Zeichenfolge schreiben. Das Folgende funktioniert nicht, zeigt aber an, was ich versuche zu tun. In diesem Beispiel gibt es drei %s
Token und die Liste enthält drei Einträge.
s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)
Ich möchte, dass die Ausgabezeichenfolge lautet:
1 BLAH 2 FOO 3 BAR
python
string
list
formatting
string-formatting
SabreWolfy
quelle
quelle
(x)
ist das gleiche wiex
. Das Einfügen eines einzelnen Tokens in Klammern hat in Python keine Bedeutung. Normalerweise setzen Sie Klammern einfoo = (bar, )
, um das Lesen zu erleichtern,foo = bar,
tun aber genau das Gleiche.print s % (x)
ist das, was OP geschrieben hat, ich habe ihn / sie nur zitiert.foo = (bar, )
:)(x)
Notation zur Klarheit; Außerdem wird vermieden, dass die Klammern vergessen werden, wenn Sie später zusätzliche Variablen hinzufügen.Sie sollten sich die Formatierungsmethode von Python ansehen . Sie können Ihre Formatierungszeichenfolge dann folgendermaßen definieren:
quelle
%
Der Bediener packt nur Tupel aus.s
komplexer machen, da ich inkrementierende Zahlen einschließen müsste und nicht nur%s
für jede Position.s
wird in verschiedenen Schritten aufgebaut, so dass es viel einfacher ist, nur das%s
Token einzuschließen.print u'%(blah)d BLAHS %(foo)d FOOS …' % {'blah': 15, 'foo': 4}
.s = '{} BLAH {} BLAH BLAH {} BLAH BLAH BLAH'
Wenn die Länge von x auf dieser Ressourcenseite variiert, können wir Folgendes verwenden:
um einen Platzhalter für jedes Element aus der Liste zu erstellen
x
. Hier ist das Beispiel:quelle
Hier ist ein Einzeiler. Eine kleine improvisierte Antwort mit Format mit print () zum Durchlaufen einer Liste.
Wie wäre es damit (Python 3.x):
Lesen Sie hier die Dokumente zur Verwendung von format () .
quelle
Da ich gerade etwas über diese coole Sache gelernt habe (Indizierung in Listen innerhalb einer Formatzeichenfolge), füge ich dieser alten Frage hinzu.
Ausgabe:
Ich habe jedoch immer noch nicht herausgefunden, wie man in Scheiben schneidet (innerhalb der Formatzeichenfolge
'"{x[2:4]}".format...
), und würde es gerne herausfinden, wenn jemand eine Idee hat, aber ich vermute, dass Sie das einfach nicht können.quelle
Das war eine lustige Frage! Eine andere Möglichkeit, dies für Listen mit variabler Länge zu handhaben, besteht darin, eine Funktion zu erstellen, die die
.format
Methode und das Entpacken von Listen voll ausnutzt . Im folgenden Beispiel verwende ich keine ausgefallene Formatierung, aber diese kann leicht an Ihre Bedürfnisse angepasst werden.quelle
Das gleiche wie die Antwort von @ neobot, aber etwas moderner und prägnanter.
quelle
Die Ausgabe ist
quelle