Ich möchte etwas wie String.Format("[{0}, {1}, {2}]", 1, 2, 3)
machen, das zurückgibt:
[1, 2, 3]
Wie mache ich das in Python?
In den vorherigen Antworten wurde die Formatierung% verwendet, die in Python 3.0 und älter ausläuft. Vorausgesetzt, Sie verwenden Python 2.6+, wird hier ein zukunftsfähigeres Formatierungssystem beschrieben:
http://docs.python.org/library/string.html#formatstrings
Obwohl es auch erweiterte Funktionen gibt, sieht die einfachste Form sehr nahe an dem, was Sie geschrieben haben:
>>> "[{0}, {1}, {2}]".format(1, 2, 3)
[1, 2, 3]
Sie haben drei Möglichkeiten:
Verwenden Sie den automatischen Druck von Python:
print [1, 2, 3] # Prints [1, 2, 3]
Dasselbe mit einer Variablen anzeigen:
numberList = [1, 2]
numberList.append(3)
print numberList # Prints [1, 2, 3]
Verwenden Sie "klassische" Zeichenkettenersetzungen (ala C's printf). Beachten Sie die unterschiedlichen Bedeutungen von% als Zeichenfolgenbezeichner und die%, um die Liste (eigentlich ein Tuple) auf die Formatierungszeichenfolge anzuwenden. (Beachten Sie, dass% als Modulo-Operator (Rest) für arithmetische Ausdrücke verwendet wird.)
print "[%i, %i, %i]" % (1, 2, 3)
Wenn wir unsere vordefinierte Variable verwenden, müssen wir sie in ein Tuple umwandeln, um dies zu tun:
print "[%i, %i, %i]" % Tuple(numberList)
Verwenden Sie die Python 3-String-Formatierung. Dies ist in früheren Versionen (ab 2.6) noch verfügbar, ist aber in Py 3 die 'neue' Methode. Beachten Sie, dass Sie entweder positionelle (ordinal) Argumente oder benannte Argumente verwenden können (für den Teufel habe ich das gestellt sie in umgekehrter Reihenfolge.
print "[{0}, {1}, {2}]".format(1, 2, 3)
Beachten Sie, dass die Namen "Eins", "Zwei" und "Drei" den Sinn haben können.)
print "[{one}, {two}, {three}]".format(three=3, two=2, one=1)
Sie suchen nach einer String-Formatierung, die in Python auf der Sprintf-Funktion in C basiert.
print "[%s, %s, %s]" % (1, 2, 3)
Eine vollständige Referenz finden Sie hier: http://docs.python.org/library/stdtypes.html#string-formatting
Um Elemente nacheinander zu drucken, verwenden Sie {}, ohne den Index anzugeben
print('[{},{},{}]'.format(1,2,3))
(funktioniert seit Python 2.7 und Python 3.1)
Sie haben sich nicht sehr lobenswert formuliert, aber ich wage eine Vermutung, wonach Sie suchen:
foo = "Hello"
bar = "world"
baz = 2
print "%s, %s number %d" % (foo, bar, baz)
Sie haben viele Lösungen :)
einfacher Weg (C-Stil):
print("[%i, %i, %i]" %(1, 2, 3))
Verwenden Sie str.format ()
print("[{0}, {1}, {2}]", 1, 2, 3)
Verwenden Sie str.Template ()
s = Template('[$a, $b, $c]')
print(s.substitute(a = 1, b = 2, c = 3))
Sie können PEP 3101 - Erweiterte String-Formatierung lesen. _
Ich denke, dass diese Kombination fehlt: P
"[{0}, {1}, {2}]".format(*[1, 2, 3])
PEP 498, das in python 3.6
gelandet ist, fügte die Interpolation von Zeichenketten hinzu, was im Grunde eine verkürzte Form von format
ist.
Sie können jetzt Folgendes tun:
f"[{1}, {2}, {3}]"
Häufige andere Anwendungen, die ich nützlich finde, sind:
pi = 3.141592653589793
today = datetime(year=2018, month=2, day=3)
num_2 = 2 # Drop assigned values in
num_3 = "3" # Call repr(), or it's shortened form !r
padding = 5 # Control prefix padding
precision = 3 # and precision for printing
f"""[{1},
{num_2},
{num_3!r},
{pi:{padding}.{precision}},
{today:%B %d, %Y}]"""
Was wird produzieren:
"[1,\n 2,\n '3',\n 3.14,\n February 03, 2018]"
Wenn Sie nicht wissen, wie viele Elemente in der Liste enthalten sind, ist dieser Ansatz der universellste
>>> '[{0}]'.format(', '.join([str(i) for i in [1,2,3]]))
'[1, 2, 3]'
Es ist viel einfacher für eine Liste von Strings
>>> '[{0}]'.format(', '.join(['a','b','c']))
'[a, b, c]'