###Einführung
Die Methode str.format()
der Klasse String in Python ermöglicht Ihnen Variablensubstitutionen und Wertformatierung durchzuführen. Dies ermöglicht es Ihnen, Elemente innerhalb eines Strings durch positionelle Formatierung zu verketten.
In diesem Tutorial werden einige der häufigen Verwendungen von Formattierern in Python erläutert, die dazu beitragen können, Ihren Code und Ihr Programm lesbarer und benutzerfreundlicher zu machen.
Voraussetzungen
Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie sich auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server beziehen, die für Ihr Betriebssystem geeignet ist (Ubuntu, CentOS, Debian usw.)
##Verwendung von Formattierern
Formatters funktionieren, indem sie ein oder mehrere Ersetzungsfelder oder Platzhalter – definiert durch ein Paar geschweifter Klammern {}
– in einen String einfügen und die Methode str.format()
aufrufen. Sie werden der Methode den Wert übergeben, den Sie mit dem String verketten möchten. Dieser Wert wird an derselben Stelle durchgereicht, an der sich Ihr Platzhalter befindet, wenn Sie das Programm ausführen.
Lassen Sie uns einen String ausgeben, der einen Formatter verwendet:
Info: Um das Beispiel im Tutorial zu verfolgen, öffnen Sie eine Python-Interaktionsshell auf Ihrem lokalen System, indem Sie den Befehl python3
ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der Eingabeaufforderung >>>
hinzufügen.
OutputSammy has 5 balloons.
In dem obigen Beispiel haben wir einen String mit einem Paar geschweifter Klammern als Platzhalter konstruiert:
Dann haben wir die Methode str.format()
hinzugefügt und den Wert der Ganzzahl 5
an diese Methode übergeben. Dadurch wird der Wert 5
in den String eingefügt, wo sich die geschweiften Klammern befanden:
Sammy has 5 balloons.
Wir können auch einer Variablen den Wert eines Strings zuweisen, der Formatter-Platzhalter enthält:
OutputSammy loves open source.
In diesem zweiten Beispiel haben wir den String "open source"
mit dem größeren String verkettet und die geschweiften Klammern im Originalstring ersetzt.
Formatter in Python ermöglichen es Ihnen, geschweifte Klammern als Platzhalter für Werte zu verwenden, die Sie mit der Methode str.format()
durchreichen.
##Verwendung von Formattern mit mehreren Platzhaltern
Sie können mehrere Paare von geschweiften Klammern verwenden, wenn Sie Formatierer verwenden. Wenn wir dem obigen Satz eine weitere Variablensubstitution hinzufügen möchten, können wir dies tun, indem wir ein zweites Paar geschweifter Klammern hinzufügen und einen zweiten Wert in die Methode übergeben:
OutputSammy loves open-source software.
Um eine weitere Substitution hinzuzufügen, haben wir ein zweites Paar geschweifter Klammern in die Originalzeichenfolge eingefügt. Dann haben wir zwei Zeichenfolgen in die str.format()
-Methode übergeben, indem wir sie durch ein Komma getrennt haben.
Demselben Syntax folgend können wir zusätzliche Substitutionen hinzufügen:
OutputSammy loves open-source software, and has 5 balloons.
In sammy_string
haben wir 4 Paare geschweifter Klammern als Platzhalter für die Variablensubstitution hinzugefügt. Dann haben wir 4 Werte in die str.format()
-Methode übergeben, indem wir Zeichenfolgen- und Ganzzahl-Datentypen gemischt haben. Jeder dieser Werte wird durch ein Komma getrennt.
##Neuanordnung von Formatierern mit Positionalen und Schlüsselwortargumenten
Wenn wir geschweifte Klammern leer lassen, ohne Parameter, wird Python die Werte ersetzen, die durch die str.format()
-Methode übergeben werden, in der Reihenfolge. Wie wir bisher gesehen haben, wird eine Formatiererkonstruktion mit zwei leeren geschweiften Klammern und zwei übergebenen Werten so aussehen:
OutputSammy the shark has a pet pilot fish!
Das erste Paar geschweifter Klammern wird durch den Zeichenfolgenwert "Hai"
ersetzt, und das zweite Paar wird durch den Zeichenfolgenwert "Pilotfisch"
ersetzt.
Die Werte, die innerhalb der Methode existieren, sehen so aus:
Sie sind im Wesentlichen der Tupel-Datentyp und jeder einzelne Wert, der im Tupel enthalten ist, kann über seine Indexnummer aufgerufen werden, die mit der Indexnummer 0 beginnt.
Wir können diese Indexnummern in die geschweiften Klammern übergeben, die als Platzhalter im Originalstring dienen:
In obigem Beispiel wird die Ausgabe das sein, was wir ohne Übermittlung von Indexnummern in die Klammern erhalten, da wir die Werte im Tupel der Reihe nach aufrufen:
OutputSammy the shark has a pet pilot fish!
Aber wenn wir die Indexnummern mit den Parametern der Platzhalter umkehren, können wir die übergebenen Werte im String umkehren:
OutputSammy the pilot fish has a pet shark!
Wenn Sie eine Indexnummer von 2 in einem Tupel aufrufen, das Werte an den Indexpositionen 0 und 1 hat, rufen Sie also einen Wert auf, der außerhalb des Bereichs liegt. Wenn Sie eine Indexnummer aufrufen, die außerhalb des Bereichs liegt, erhalten Sie eine Fehlermeldung:
OutputIndexError: tuple index out of range
Die Fehlermeldung, die wir sehen, bezieht sich darauf, dass das Tupel nur Werte an den Indexnummern 0 und 1 hat, wodurch die Indexnummer 2 außerhalb des Bereichs liegt.
Fügen wir einige weitere Platzhalter und einige weitere Werte hinzu, die an sie übergeben werden sollen, damit wir besser verstehen können, wie wir die Formatierer etwas besser umordnen können. Zuerst hier ist ein neuer String mit vier Platzhaltern:
OutputSammy is a happy, smiling and blue shark!
Ohne Parameter werden die Werte, die in die Methode str.format()
übergeben werden, in der Reihenfolge in den String konkateniert.
Die Zeichenfolgenwerte im Tupel entsprechen den folgenden Indexnummern:
“happy” | “smiling” | “blue” | “shark” |
---|---|---|---|
0 | 1 | 2 | 3 |
Lassen Sie uns die Indexnummern der Werte verwenden, um die Reihenfolge zu ändern, in der sie im String erscheinen:
OutputSammy is a shark, blue, and smiling happy!
Da wir mit Indexnummer 3 begonnen haben, haben wir zuerst den letzten Wert von "shark"
aufgerufen. Die anderen Indexnummern, die als Parameter enthalten sind, ändern die Reihenfolge, in der die Wörter innerhalb des Originalstrings erscheinen.
Zusätzlich zu den Positionsargumenten können wir auch Schlüsselwortargumente einführen, die nach ihrem Schlüsselwortnamen aufgerufen werden:
OutputSammy the shark made a pull request.
Dieses Beispiel zeigt die Verwendung eines Schlüsselwortarguments zusammen mit Positionsargumenten. Wir können das Schlüsselwortargument pr
neben Positionsargumenten einfügen und diese Argumente verschieben, um den resultierenden String zu ändern:
OutputSammy the pull request made a shark.
Positions- und Schlüsselwortargumente, die mit Zeichenkettenformatierern verwendet werden, geben uns mehr Kontrolle darüber, wie wir unsere ursprünglichen Zeichenketten durch Neuordnung manipulieren können.
##Spezifizieren des Typs
Wir können mehr Parameter innerhalb der geschweiften Klammern unserer Syntax einschließen. Wir verwenden die Formatcode-Syntax {field_name:conversion}
, wobei field_name
die Indexnummer des Arguments für die str.format()
-Methode ist, die wir im Umordnungsteil durchlaufen haben, und conversion
bezieht sich auf den Konvertierungscode des Datentyps, den Sie mit dem Formatierer verwenden.
Der Konvertierungstyp bezieht sich auf den einzelnen Zeichentyp-Code, den Python verwendet. Die Codes, die wir hier verwenden werden, sind s
für String, d
zur Anzeige von Dezimalzahlen (10er-Basis) und f
, den wir verwenden, um Fließkommazahlen mit Dezimalstellen anzuzeigen. Sie können mehr über die Format-Spezifikations-Minischprache in der offiziellen Dokumentation von Python 3 lesen.
Lassen Sie uns ein Beispiel betrachten, bei dem eine Ganzzahl durch die Methode übergeben wird, aber wir möchten sie als Gleitkommazahl anzeigen, indem wir das Argument für den Konvertierungstyp f
hinzufügen:
OutputSammy ate 75.000000 percent of a pizza!
Wir haben die Syntax von {field_name:conversion}
für das erste geschweifte Klammer-Ersetzungsfeld verwendet, um eine Gleitkommazahl auszugeben. Die zweite geschweifte Klammer verwendet nur den ersten Parameter {field_name}
.
In dem obigen Beispiel werden viele Zahlen nach dem Dezimalpunkt angezeigt, aber Sie können diese begrenzen. Wenn Sie f
für Fließkommawerte angeben, können Sie zusätzlich die Präzision dieses Werts angeben, indem Sie einen Punkt .
gefolgt von der Anzahl der Ziffern nach dem Dezimalpunkt angeben, die Sie einschließen möchten.
Wenn Sammy 75,765367% der Pizza gegessen hat, aber wir keine hohe Genauigkeit benötigen, können wir die Stellen nach dem Dezimalpunkt auf 3 begrenzen, indem wir .3
vor dem Konvertierungstyp f
hinzufügen:
OutputSammy ate 75.765 percent of a pizza!
Wenn wir nur eine Dezimalstelle wollen, können wir den String und die Methode wie folgt neu schreiben:
OutputSammy ate 75.8 percent of a pizza!
Beachten Sie, dass die Änderung der Präzision dazu führen wird, dass die Zahl gerundet wird.
Obwohl wir eine Zahl ohne Dezimalstellen als Gleitkommazahl anzeigen, erhalten wir einen Fehler, wenn wir versuchen, die Gleitkommazahl in eine Ganzzahl umzuwandeln, indem wir den Konvertierungstyp d
verwenden.
OutputValueError: Unknown format code 'd' for object of type 'float'
Wenn Sie möchten, dass keine Dezimalstellen angezeigt werden, können Sie Ihren Formatter folgendermaßen schreiben:
OutputSammy ate 76 percent of a pizza!
Dies wird Ihre Gleitkommazahl nicht in eine Ganzzahl umwandeln, sondern die Anzahl der Stellen nach dem Dezimalpunkt begrenzen.
##Variablensubstitutionen mit Polsterung
Weil die Platzhalter Ersatzfelder sind, können Sie ein Element durch Erhöhen der Feldgröße über zusätzliche Parameter polstern oder Platz darum herum schaffen. Dies kann nützlich sein, wenn wir eine große Menge an Daten visuell organisieren müssen.
Wir können eine Zahl hinzufügen, um die Feldgröße (in Bezug auf Zeichen) nach dem Doppelpunkt :
in den geschweiften Klammern unserer Syntax anzugeben:
OutputSammy has 5 red balloons !
In dem obigen Beispiel haben wir der Zahl 5
eine Feldgröße von 4 Zeichen und dem String balloons
eine Feldgröße von 16 Zeichen (weil es ein langer String ist) gegeben.
Wie wir sehen, sind Strings standardmäßig linksbündig innerhalb des Feldes und Zahlen sind rechtsbündig. Sie können dies ändern, indem Sie einen Ausrichtungscode nach dem Doppelpunkt platzieren. <
wird den Text in einem Feld linksbündig ausrichten, ^
wird den Text im Feld zentrieren, und >
wird ihn rechtsbündig ausrichten.
Lassen Sie uns die Zahl linksbündig und den String zentrieren:
OutputSammy has 5 red balloons !
Jetzt sehen wir, dass 5
linksbündig ist und Platz im Feld vor rot
bietet, und Luftballons
in seinem Feld zentriert ist mit Platz links und rechts davon.
Standardmäßig füllt Python ein Feld mit Leerzeichen, wenn wir es mit Formattierern vergrößern. Wir können das ändern, indem wir das Zeichen angeben, das wir direkt nach dem Doppelpunkt haben möchten:
Output*******Sammy********
Wir akzeptieren den an str.format()
übergebenen String an der Indexposition 0, da wir nicht anders angegeben haben, einschließlich des Doppelpunkts, und geben an, dass wir *
anstelle von Leerzeichen verwenden, um das Feld aufzufüllen. Wir zentrieren den String mit ^
, geben an, dass das Feld 20 Zeichen groß ist, und zeigen auch an, dass wir mit einem Zeichenkonvertierungstyp arbeiten, indem wir s
einschließen.
Diese Parameter können wir mit anderen Parametern kombinieren, die wir zuvor verwendet haben:
OutputSammy ate 76 percent of a pizza!
In den Parametern innerhalb der geschweiften Klammern haben wir die Indexfeldnummer des Floats angegeben und den Doppelpunkt inkludiert, die Größe der Feldnummer angegeben und den Punkt eingeschlossen, die Anzahl der Stellen nach dem Dezimalpunkt angegeben und dann den Konvertierungstyp f
spezifiziert.
##Verwendung von Variablen
Bisher haben wir Ganzzahlen, Floats und Zeichenfolgen in die Methode str.format()
übergeben, aber wir können auch Variablen durch die Methode übergeben. Dies funktioniert wie jede andere Variable.
OutputSammy has 8 balloons today!
Wir können Variablen sowohl für die Originalzeichenfolge als auch für das, was in die Methode übergeben wird, verwenden:
OutputSammy has 8 balloons today!
Variablen können leicht für jeden Teil unserer Formatierer-Syntaxkonstruktion substituiert werden. Dies erleichtert die Arbeit, wenn wir Benutzereingaben entgegennehmen und diese Werte Variablen zuweisen.
##Verwendung von Formatierern zur Organisation von Daten
Formatierer kommen am besten zur Geltung, wenn sie verwendet werden, um eine große Menge von Daten auf visuelle Weise zu organisieren. Wenn wir Datenbanken Benutzern anzeigen, können Formatierer verwendet werden, um die Feldgröße zu erhöhen und die Ausrichtung zu ändern, was die Lesbarkeit der Ausgabe verbessern kann.
Lassen Sie uns eine typische for-Schleife in Python betrachten, die i
, i*i
und i*i*i
im Bereich von 3 bis 12 ausgeben wird:
Output3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
12 144 1728
Obwohl die Ausgabe auf eine bestimmte Weise organisiert ist, überlaufen die Zahlen in die Spalten der anderen, was den unteren Teil der Ausgabe weniger lesbar macht. Wenn Sie mit einem größeren Datensatz mit vielen kleinen und großen Zahlen arbeiten, kann dies ein Problem darstellen.
Lassen Sie uns Formatierer verwenden, um diesen Zahlen mehr Platz zu geben:
Hier haben wir in unseren geschweiften Klammern den Feldnamen für den Index nicht hinzugefügt und mit dem Doppelpunkt begonnen, gefolgt von der Zahl für die Feldgröße und einem d
-Konvertierungstyp, da wir mit Ganzzahlen arbeiten. In diesem Beispiel haben wir die Größe jeder erwarteten Ausgabe berücksichtigt und je nach maximal möglicher Zahlengröße 2 zusätzliche Zeichenplätze für jede bereitgestellt, sodass unsere Ausgabe wie folgt aussieht:
Output 3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
12 144 1728
Wir können eine konsistente Feldgröße angeben, um gleichmäßige Spalten zu haben und sicherzustellen, dass wir die größeren Zahlen berücksichtigen:
Output 3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
12 144 1728
Wir können auch die Ausrichtung der Spalten manipulieren, indem wir <
, ^
und >
für die Textausrichtung hinzufügen, das d
in ein f
ändern, um Dezimalstellen hinzuzufügen, Feldnamenindexnummern ändern und mehr, um sicherzustellen, dass wir die Daten so anzeigen, wie wir es möchten.
##Schlussfolgerung
Die Verwendung von Formatierern für die Variablensubstitution kann eine effektive Möglichkeit sein, Zeichenketten zu verketten und Werte und Daten zu organisieren. Formatierer stellen eine grundlegende, aber nicht deskriptive Methode dar, um Variablensubstitutionen in eine Zeichenkette einzufügen, und sind nützlich, um sicherzustellen, dass die Ausgabe lesbar und benutzerfreundlich ist.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-string-formatters-in-python-3