Python String Formatierung

(Sponsoren) Lernen Sie Python mit DataCamp’s kostenlosem Einführungslehrgang in Python. Lernen Sie Data Science, indem Sie interaktive Programmieraufgaben lösen und Videos von Experten ansehen. Starten Sie jetzt!

Aktualisiert am 07. Januar 2020

Die format()Methode ermöglicht es Ihnen, Strings auf jede beliebige Weise zu formatieren.

Syntax: template.format(p1, p1, .... , k1=v1, k2=v2)

Vorlage ist eine Zeichenkette, die Formatcodes enthält, format()Methode verwendet ihr Argument, um Wert für jeden Formatcode zu ersetzen. Z.B.:

>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)

{0} und {1} sind Formatcodes. Der Formatcode {0} wird durch das erste Argument von format(), d.h. 12, ersetzt, während {1} durch das zweite Argument von format(), d.h. 31, ersetzt wird.

Erwartete Ausgabe:

Sam has 12 red balls and 31 yellow balls

Diese Technik ist für einfache Formatierungen in Ordnung, aber was ist, wenn Sie die Genauigkeit einer Fließkommazahl angeben wollen? In diesem Fall müssen Sie mehr über Formatcodes erfahren. Hier ist die vollständige Syntax der Formatcodes.

Syntax: {:}

Das type kann mit Formatcodes verwendet werden:

Formatcodes Beschreibung
d für Ganzzahlen
f für Gleitkommazahlen
b für Binärzahlen
o für Oktalzahlen
x für hexadezimale Oktalzahlen
s für String
e für Fließkommazahlen im Exponentenformat

Nachfolgende Beispiele machen die Sache deutlicher.

Beispiel 1:

>>> "Floating point {0:.2f}".format(345.7916732)

Hier geben wir 2 Stellen der Genauigkeit an und f wird verwendet, um eine Fließkommazahl darzustellen.

Erwartete Ausgabe:

Floating point 345.79

Beispiel 2:

12
>>> import math>>> "Floating point {0:10.3f}".format(math.pi)

Hier geben wir 3 Stellen für die Genauigkeit, 10 für die Breite und f für die Gleitkommazahl an.

Erwartete Ausgabe:

Floating point 3.142

Beispiel 3:

"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)

Hier steht d in {1:d} für einen Ganzzahlwert.

Erwartete Ausgabe:

Floating point pi = 3.142, with 3 digit precision

Sie müssen die Genauigkeit nur im Fall von Fließkommazahlen angeben, wenn Sie die Genauigkeit für Ganzzahlen angeben, wird ValueError erhöht.

Beispiel 5:

'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)

Erwartete Ausgabe:

Sam has 31 red balls and 12 yellow balls

Beispiel 6:

Erwartete Ausgabe:

In binary 4 is 100

Beispiel 7:

12
array = "A = {0}, B = {1}, C = {2}".format(*array)

Erwartete Ausgabe:

A = 34, B = 66, C = 12

Beispiel 8:

123456
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d)

Erwartete Ausgabe:

Sam had 122 hats and 42 mats

Die Methode format() unterstützt auch Schlüsselwortargumente.

'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)

Bei der Verwendung von Schlüsselwortargumenten müssen wir die Argumente innerhalb von {} und nicht als numerischen Index verwenden.

Sie können auch Positionsargumente mit Schlüsselwortargumenten mischen

12
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31)

Die format()Methode zur Formatierung von Strings ist ziemlich neu und wurde in Python 2.6 eingeführt. Es gibt noch eine andere alte Technik, die Sie in Legacy-Codes sehen werden, die Ihnen erlaubt, String mit dem %-Operator anstelle der format()-Methode zu formatieren.

Lassen Sie uns ein Beispiel nehmen.

"%d pens cost = %.2f" % (12, 150.87612)

Hier verwenden wir Template-String auf der linken Seite von %. Anstelle von {} für Formatcodes verwenden wir %. Auf der rechten Seite von % verwenden wir ein Tupel, das unsere Werte enthält. %d und %.2f werden als Formatspezifizierer bezeichnet, sie beginnen mit %, gefolgt von einem Zeichen, das den Datentyp darstellt. So ist z.B. %d ein Platzhalter für eine ganze Zahl und %.2f ein Platzhalter für eine Fließkommazahl.

So wird %d durch den ersten Wert des Tupels, d.h. 12, und %.2f durch den zweiten Wert, d.h. 150.87612, ersetzt.

Erwartete Ausgabe:

12 pens cost = 150.88

Weitere Beispiele.

Beispiel 1:

Neu:

"{0:d} {1:d} ".format(12, 31)

Alt:

"%d %d" % (12, 31)

Erwartete Ausgabe:

12 31

Beispiel 2:

Neu:

"{0:.2f} {1:.3f}".format(12.3152, 89.65431)

Alt:

"%.2f %.3f" % (12.3152, 89.65431)

Erwartete Ausgabe:

12.32 89.654

Beispiel 3:

Neu:

"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )

Alt:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.