English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die Methode format() formatiert angegebene Werte und setzt sie in die Platzhalter der Zeichenkette ein.
Platzhalter werden durch eckige Klammern {} definiert. Weitere Informationen zu Platzhaltern finden Sie im Abschnitt "Platzhalter".
Die Methode format() gibt einen formatierten String zurück.
Die Syntax der Methode format() ist:
template.format(p0, p1, ..., k0=v0, k1=v1, ...)
hier, p0, p1,... sind Positionsparameter und k0, k1,... haben Werte, die Schlüsselwortparameter v0, v1,...。
und, template ist eine Mischung aus Formatcodes und Parameterplatzhaltern.
Das format()-Verfahren nimmt eine beliebige Anzahl von Parametern an. Es gibt jedoch zwei Arten von Parametern:
Positionsparameter -Eine Liste von Parametern, die mit dem Parameterindex im Klammern {index} erreicht werden können
Schlüsselwortparameter -Eine Liste von Parameter mit dem Typ Key=Value, die mit dem Parameterkey im Klammern {key} erreicht werden kann
Das format()-Verfahren gibt einen formatierten String zurück.
liest format() den Typ der an ihn übergebenen Parameter und formatiert sie entsprechend den in der Zeichenfolge definierten Formatcodes.
hier ist der Parameter 0 der String "Adam", der Parameter1ist ein Fließkommazahl230.2346。
Hinweis: In Python beginnt die Parameterliste mit 0.
Der String "Hello {0}, your balance is {1:9.3f}" ist ein Template-String. Er enthält Formatcodes für die Formatierung.
Klammern sind nur Platzhalter für die zu platzierenden Parameter. Im obigen Beispiel ist {0} der Platzhalter für "Adam", {1:9.3f} ist230.2346als Platzhalter verwendet werden.
da Template-String-Referenzen wie {0} und {1ist, daher sind diese Parameter Positionsparameter. Sie können auch ohne Nummer referenziert werden, da {} und Python sie intern in Zahlen umwandeln.
Intern,
da "Adam" der 0 anParameter, daher wird er an der Position {0} platziert. Da {0} keine anderen Formatcodes enthält, führt er keine anderen Aktionen aus.
allerdings der erste Parameter230.2346nicht so. Hier, {1:9.3f} wird230.2346wird an seiner Position platziert und ausgeführt9.3f-Operation.
f gibt das Format an, das momentan mit Fließkommazahlen bearbeitet wird. Wenn es nicht korrekt angegeben ist, wird ein Fehler ausgegeben.
vor "." gefolgt vom Teil. (9bestimmt die Anzahl der Ziffern (230.2346ist die minimale Breite, die verwendet werden kann/gefüllt. In diesem Fall,230.2346wird mindestens zugewiesen9an Positionen, einschließlich ".".
Wenn keine Ausrichtungsoption angegeben ist, wird sie auf die rechte Seite der übrigen Leerzeichen ausgerichtet. (Für Zeichenfolgen wird sie nach links ausgerichtet.)
nach "." gefolgt vom Teil. (3wird der Dezimalteil (2346wird auf die angegebene Anzahl von Ziffern abgeschnitten. In diesem Fall,3346wird nach dem Abschneiden2346。
Verbleibende Ziffern (46wird gerundet und ausgegeben235。
Wir haben oben denselben Beispiel verwendet, um den Unterschied zwischen Schlüsselwort- und Positionsparametern zu zeigen.
Hier verwenden wir nicht nur Parameter, sondern auch Werte als Parameter. Das bedeutet name="Adam" und blc=230.2346。
由于这些参数是由它们的键作为{name}和{blc:9.3f} auf die Referenz, die von {name} und {blc:}}
Intern,
Der Platzhalter {name} wird durch den Wert von name ersetzt-"Adam". Da es keine anderen Formatierungscode enthält, wird "Adam" platziert.
Für den Parameter blc = 230.2346,Platzhalter {blc:9.3f} wird durch den Wert ersetzt230.2346。Aber bevor es ersetzt wird, führt es wie in den obigen Beispielen aus9.3f-Operation.
Ausgabe230.235。Der Dezimalteil befindet sich3wird abgeschnitten und die restlichen Ziffern gerundet. Ebenso wird die Gesamtbreite aufgeteilt9,links zwei Leerzeichen lassen.
Die format()-Methode ermöglicht das Formatieren mit einfachen Platzhaltern.
# Standardparameter print("Hallo {}, Ihr Saldo beträgt {:.".format("Adam", 230.2346)) # Positionsparameter print("Hallo {0}, Ihr Saldo beträgt {1}.format("Adam", 230.2346)) # Wörtliche Parameter print("Hallo {name}, Ihr Saldo beträgt {blc}.".format(name="Adam", blc=230.2346)) # Gemischte Parameter print("Hallo {0}, Ihr Saldo beträgt {blc}.".format("Adam", blc=230.2346))
Wenn das Programm ausgeführt wird, sind alle Ausgaben gleich:
Hallo Adam, Ihr Saldo beträgt 230.2346. Hallo Adam, Ihr Saldo beträgt 230.2346. Hallo Adam, Ihr Saldo beträgt 230.2346. Hallo Adam, Ihr Saldo beträgt 230.2346.
Hinweis:Für gemischte Parameter müssen die Schlüsselparameter immer den positionellen Parametern folgen.
Sie können die unten angegebenen Formatierungsbezeichner verwenden, um die Nummerierungsformatierung zu setzen:
Typ | Bedeutung |
---|---|
d | Dezimale Ganzzahl |
c | Correspondierender Unicode-Zeichen |
b | Binäres Format |
o | Oktalformat |
x | Hexadezimales Format (Kleinschreibung) |
X | Hexadezimales Format (Großbuchstaben) |
n | Ist mit "d" gleich. Ausnahme: Die aktuelle Spracheinstellung für Zifferntrennzeichen wird verwendet. |
e | Exponentendarstellung. (Kleinschreibung e) |
E | Exponentialsymbol (Großbuchstabe E) |
f | Zeige Dezimalziffern (Standardwert:6) |
F | Ist mit "f" gleich. Ausnahme: "inf" wird als "INF" und "nan" als "NAN" angezeigt. |
g | Allgemeines Format. Runde die Zahl auf p Significantziffern ab. (Standardgenauigkeit:6) |
G | Ist mit "g" gleich. Wenn die Anzahl groß ist, wird auf "E" umgeschaltet. |
% | Malen mit100 und endet mit %. |
# Ganzzahlparameter print("Zahlen: {:d}".format(123)) # Float-Parameter print("Float-Zahlen: {:f}".format(123.4567898)) # Oktal, Binär- und Hexadezimalformat print("bin: {0:b}, oct: {0:o}, hex: {0:x}".format(12))
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
Zahlen: 123 Float-Zahlen:123.456790 bin: 1100, oct: 14, hex: c
# Integer mit minimaler Breite print("{:5d}".format(12)) # Breite hat keine Wirkung auf Zahlen, die länger als die Füllung sind print("{:2d}".format(1234)) # Füllung von Floats print("{:8.3f}".format(12.2346)) # Integer mit nuller Breite print("{:=05d}".format(12)) # Mit Nullen gefüllte Float-Zahlen print("{:=08.3f}".format(12.2346))
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
121234 12.235000120012.235
Hier,
Im ersten Statement, {:5d} nimmt Integerparameter an und gibt die minimale Breite an5。Da keine Ausrichtung angegeben wurde, wird es nach rechts ausgerichtet.
Im zweiten Statement, siehe die Breite (2)kleiner als die Zahl (1234),daher ist keine Leerstelle links erforderlich und die Zahl wird nicht abgeschnitten.
Im Gegensatz zu Integer haben Floats sowohl einen Ganzen als auch einen Bruchteil. Und die Definition der kleinsten Breite der Zahl umfasst beide Teile, einschließlich des Punktes.
Im dritten Statement, {:8.3f}kürzt den Bruchteil ab3Stellen, runde die letzten beiden Ziffern ab. Und die Zahl ist jetzt12.235,gesamte Breite8,links behalten2Positionen.
Wenn der Rest des Raums mit Nullen gefüllt werden soll, setze eine Null vor den Formatierungsbezeichner. Es gilt für Integer und Float: {:05d} und {:08.3f}。
# Anzeigen+Zeichen print("{:+f} {:+f}".format(12.23, -12.23)) # Nur anzeigen-Zeichen print("{:-f} {:-f}".format(12.23, -12.23)) # Anzeigen+Raum vor dem Zeichen print("{:=f} {:=f}".format(12.23, -12.23))
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
+12.230000 -12.230000 12.230000 -12.230000 12.230000 -12.230000
Wenn eine bestimmte Breite für die Zahl angegeben wird, werden die Operatoren < und ^> verwendet, um auszurichten. ^>=
Typ | Bedeutung |
---|---|
< | Links ausgerichtet den Rest des Raums |
^ | Zentriert den Rest des Raums |
> | mit dem Rest des Raums nach rechts ausgerichtet |
= | den mit einem Pluszeichen versehenen+)(-)zwingt zur linken Seite |
# Rechts ausgerichtete Integer print("{:5d}".format(12)) # Ausgerichtete Float-Zahlen print("{:^10.3f}".format(12.2346)) # Links ausgerichtete Integer, gefüllt mit Nullen print("{:<05d}".format(12)) # Ausgerichtetes String-Füllen nach zentriert print("{:=8.3f}".format(-12.2346))
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
12 12.235 12000- 12.235
Hinweis:Für den dritten Beispiel, das Ausrichten von Integer mit Nullen kann Probleme verursachen, dieser Beispiel gibt zurück12000 anstatt12。
Als Zahl kann format() auf ähnliche Weise verwendet werden, um Strings zu formatieren.
# Ausgerichtetes String-Füllen nach links print("{:5".format("cat")). # Ausgerichtetes String-Füllen nach rechts print("{:>}}5".format("cat")). # Zentrierte Zeichenkette ausfüllen print("{:^5".format("cat")). # Zentrierte Zeichenkette ausfüllen # Und '*' Füllzeichen print("{:*^5".format("cat")).
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
cat cat cat *cat*
# Die Zeichenkette auf die Länge kürzen3Zeichen print("{:.3".format("caterpillar")). # Die Zeichenkette auf die Länge kürzen3Zeichen # Und Füllen print("{:5.3".format("caterpillar")). # Die Zeichenkette auf die Länge kürzen3Zeichen, # Füllen und Zentrierung print("{:^5.3".format("caterpillar")).
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
catcat cat
Python internes getattr() wird in Form " .age" für Klassenmitglieder verwendet. Und es verwendet __getitem__() zur Suche nach "[index]"-Art der Dictionary-Mitglieder.
# define Person class class Person: age = 23 name = "Adam" # Formatierung von age print("{p.name}年龄是 : {p.age}".format(p=Person()))
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
Adam's 年龄是 : 23
Hier wird das Person-Objekt als Schlüsselwortparameter p übergeben.
Im Musterstring werden .name und .age verwendet, um das name und age von Person abzurufen.
# Definition des Person-Dictionaries person = {'age': 23, 'name': 'Adam'} # Formatierung von age print("{p[name]}'s age is: {p[age]}".format(p=person))
Wenn Sie das Programm ausführen, wird die Ausgabe sein:
Adam's age is: 23
Wie class ähnlich wird das Person-Dictionary als Schlüsselwortparameter p übergeben.
Im Musterstring werden [name] und [age] verwendet, um das name und age der Person abzurufen.
Es gibt eine einfachere Methode, um Python-Formatierung für Dictionary-Strings str.format zu verwenden**mapping).
# Definition des Person-Dictionaries person = {'age': 23, 'name': 'Adam'} # Formatierung von age print("{name}'s age is: {age}".format(**person))
** ist ein Formatparameter (minimale Feldbreite).
Sie können auch dynamisch Formatcodes übergeben, z.B. Präzision, Ausrichtung, Füllzeichen als Positions- oder Schlüsselwörterparameter.
Dynamische String-Formatvorlage string = "{:{fill}{align}{width}}" # 将格式代码作为参数传递 print(string.format('cat', fill='*', align='^', width=5)) # 动态浮点格式模板 num = "\{:\{align:\width\.\precision\f}" # 将格式代码作为参数传递 print(num.format(','123.236, align=‘<’, width=8, precision=2))
Wenn das Programm ausgeführt wird, lautet die Ausgabe:
**cat**123.24
Hier,
在第一个示例中," cat"是要格式化的位置参数。同样,fill='*‘,align=‘^’和width=5是关键字参数。
在模板字符串中,这些关键字参数不是作为要打印的普通字符串而是作为实际格式代码检索的fill, align 和 width。
参数将替换相应的已命名占位符,并且字符串“ cat”将相应地设置格式。
同样,在第二个示例中,123.236是位置参数,并且align,width和precision作为格式代码传递到模板字符串。
format()还支持特定于类型的格式设置选项,例如日期时间格式和复数格式。
format()内部调用__format__()从datetime,而format()访问复数的属性。
Sie können leicht die __format__() -Methode jedes Objekts zur benutzerdefinierten Formatierung überschreiben.
import datetime # 日期时间格式 date = datetime.datetime.now() print("Aktuelle Zeit: \{:%Y/\%m/\%d \%H:\%M:\%S".format(date)) # 复数格式 complexNumber = 1+2j print("Realteil: \{0.real} und Imaginärteil: \{0.imag}".format(complexNumber)) # 自定义 __format__()方法 class Person: def __format__(self, format): if(format == 'age'): return ''23" return 'None' print("Adam's Alter ist: \{\{age\}\}".format(Person()))
Wenn das Programm ausgeführt wird, lautet die Ausgabe:
Aktuelle Zeit: 2020/04/17 14:33:02 Reeller Teil: 1.0 und Imaginärer Teil: 2.0 Adam's Alter ist: 23
Hier,
Für datetime:
Das aktuelle Datum und die Zeit werden als Positionsparameter an die format()-Methode übergeben.
Und intern wird das __format__() Methode verwendet, format() kann Jahr, Monat, Tag, Stunde, Minute und Sekunde aufrufen.
Für Komplexe Zahlen:
1 + 2j wird intern in ein ComplexNumber-Objekt umgewandelt.
Dann werden die Attribute real und imag aufgerufen, die Zahl wird formatiert.
__format__() überschreiben:
Wie datetime können Sie Ihre eigenen __format__() Methoden überschreiben, um benutzerdefinierte Formatierungen durchzuführen. Wenn {age} aufgerufen wird, gibt das Format das Alter zurück
Sie können auch die Funktionen __str__() und __repr__() eines Objekts verwenden, indem Sie die Kurzschreibweise von format() anwenden.
Wie __format__() können Sie die Methoden __str__() und __repr__() eines Objekts leicht überschreiben.
# __str__() und __repr__() können abgekürzt als !r und !s geschrieben werden print("Quotes: {0!r}, Without Quotes: {0!s}".format("cat")) # __str__() und __repr__() Implementierung der Klasse class Person: def __str__(self): return "STR" def __repr__(self): return "REPR" print("repr: {p!r}, str: {p!s}".format(p=Person()))
Wenn das Programm ausgeführt wird, lautet die Ausgabe:
Quotes: 'cat', Without Quotes: cat repr: REPR, str: STR