Ich mache das in Python 2:
"(%d goals, $%d)" % (self.goals, self.penalties)
Was ist die Python 3-Version davon?
Ich habe versucht, online nach Beispielen zu suchen, aber ich habe immer wieder Python 2-Versionen erhalten.
python
python-3.x
string
JoseBazBaz
quelle
quelle
Antworten:
Hier sind die Dokumente zur "neuen" Formatsyntax. Ein Beispiel wäre:
Wenn beide
goals
undpenalties
Ganzzahlen sind (dh ihr Standardformat ist in Ordnung), kann dies verkürzt werden auf:Und da die Parameter Felder von sind
self
, gibt es auch eine Möglichkeit, dies zweimal mit einem einzelnen Argument zu tun (wie @Burhan Khalid in den Kommentaren feststellte):Erklären:
{}
bedeutet nur das nächste Positionsargument mit Standardformat;{0}
bedeutet das Argument mit Index0
im Standardformat;{:d}
ist das nächste Positionsargument mit dezimalem Ganzzahlformat;{0:d}
ist das Argument mit index0
im dezimalen Ganzzahlformat.Es gibt viele andere Dinge, die Sie tun können, wenn Sie ein Argument auswählen (benannte Argumente anstelle von Positionsargumenten verwenden, auf Felder zugreifen usw.) und viele Formatoptionen (Auffüllen der Zahl, Verwenden von Tausenden Trennzeichen, Anzeigen von Zeichen oder nicht usw.). Einige andere Beispiele:
Hinweis: Wie andere bereits betont haben, ersetzt das neue Format das frühere nicht. Beide sind sowohl in Python 3 als auch in den neueren Versionen von Python 2 verfügbar. Einige mögen sagen, dass es eine Frage der Präferenz ist, aber meiner Meinung nach ist die neuere viel ausdrucksstärker als die ältere und sollte beim Schreiben von neuem Code verwendet werden (es sei denn, sie zielt natürlich auf ältere Umgebungen ab).
quelle
"({0.goals} goals, ${0.penalties})".format(self)
"conversion rate: {:.2%}".format(self.goals / self.shots)
? Funktioniert gut für mich wie es ist ... (Python 3.4) Beachten Sie, dass es keine enthältf
, ich bitte um Formatierung als Prozentsatz, nicht als Gleitkommazahl."{:.2f}%".format(float_num)
funktioniert gut für beide.$
hat hier keine besondere Bedeutung, weder in der alten noch in der neuen Formatsyntax, sollte also unverändert in der generierten Zeichenfolge vorhanden sein.Python 3.6 unterstützt jetzt die Shortand-Literal-String-Interpolation mit PEP 498 . Für Ihren Anwendungsfall lautet die neue Syntax einfach:
Dies ähnelt dem vorherigen
.format
Standard, lässt jedoch Dinge wie :quelle
Diese Zeile funktioniert wie sie ist in Python 3.
quelle
Ich mag diesen Ansatz
Beachten Sie das an die Klammern angehängte d und s.
Ausgabe wird sein:
quelle