Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung von str.format() in Python_python

Detaillierte Erklärung von str.format() in Python_python

不言
不言Original
2018-04-04 17:27:141756Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich die grundlegende Syntax und die erweiterte Verwendung von str.format() in der Python-Programmierung vor. Er ist sehr detailliert und enthält Beispiele.

1 . Die Einführung von str.format

In Python können wir + verwenden, um Zeichenfolgen zu verketten, was in einfachen Fällen gut funktioniert. Wenn wir jedoch eine komplexe Zeichenfolgenverkettung durchführen müssen und diese trotzdem mit + vervollständigen, wird der Code dadurch nicht nur unklar, sondern erschwert auch die Wartung des Codes. Zu diesem Zeitpunkt ist diese Methode unzureichend.

Zum Beispiel möchten wir einen solchen Datensatz ausdrucken:

Benutzer:John hat Aktion:Zahlung um Zeit:13:30:00 abgeschlossen

Wenn Sie Verwenden Sie das Pluszeichen. Die Implementierung hat die folgende Form:

print "User:" + user_name + " has completed Action:" + \ 
      action_name + " at Time:" + current_time

Wenn wir diesen Code in Zukunft noch einmal lesen, wird es schwierig Für uns ist das Ausgabeformat intuitiv zu erkennen, und es ist relativ mühsam, es zu ändern.

Wir können stattdessen % verwenden:

print "User:%s has completed Action:%s at Time:%s" % \ 
    (user_name, action_name, current_time)

Diesmal wird der Code viel klarer und prägnanter.

Python bietet uns jedoch eine weitere einfache und elegante Implementierungsmethode, die auch die offizieller empfohlene Methode ist: Verwenden Sie str.format(), um Zeichenfolgen zu formatieren:

print "User:{} has completed Action:{} at Time:{}".format( 
    user_name, action_name, current_time)

str.format kann in einfachen Szenarien verwendet werden und ist auch in der Lage, komplexe String-Ersetzungen ohne umständliche String-Verkettungsvorgänge durchzuführen. Die in Python integrierten Typen str und unicode unterstützen beide die Verwendung von str.format() zum Formatieren von Zeichenfolgen.

Als nächstes werden wir die spezifische Verwendung von str.format() im Detail besprechen.

2. Grundlegende Syntax von str.format

Die Formatzeichenfolge verwendet geschweifte Klammern {}, um das Ersetzungsfeld zu umgeben, bei dem es sich um die zu ersetzende Zeichenfolge handelt . Zeichen, die nicht in geschweifte Klammern eingeschlossen sind, werden im Ergebnis intakt angezeigt.

2.1. Verwendung des Positionsindex

Die folgenden zwei Schreibweisen sind äquivalent:

"Hallo, {} und {}!".format("John", " Mary")

"Hallo, {0} und {1}!".format("John", "Mary")

Die Zielzeichenfolge kann in die geschweifte Zeile geschrieben werden Klammern Der Index kann auch weggelassen werden. Wenn es weggelassen wird, erfolgt die Ersetzung in der Reihenfolge der in Formatklammern eingeschlossenen Zielzeichenfolgen.

2.2. Verwendung des Schlüsselwortindex

Zusätzlich zur Angabe der Zielzeichenfolge nach Position können wir sie auch nach Schlüsselwort angeben.

Zum Beispiel:

"Hello, {boy} and {girl}!".format(boy="John", girl="Mary")

Der Vorteil der Verwendung des Schlüsselwortindex besteht darin, dass wir uns nicht um die Position des Schlüsselwortindex kümmern müssen Parameter und das Endergebnis der Zeichenfolge sind auf einen Blick erkennbar. Bei der zukünftigen Codewartung können wir die entsprechenden Parameter schnell ändern, ohne die entsprechenden Parameter einzeln anhand der Zeichenfolge suchen zu müssen.

Hinweis: Wenn die Zeichenfolge selbst geschweifte Klammern enthält, müssen diese durch zweimaliges Wiederholen maskiert werden. Wenn die Zeichenfolge selbst beispielsweise { enthält, schreiben wir sie einfach in {{ um, damit Python weiß, dass es sich um ein normales Zeichen handelt und nicht um die geschweiften Klammern, die ein Ersetzungsfeld umgeben.

3. Erweiterte Syntax von str.format

str.format ist sehr leistungsfähig genug, um die formatierte Ausgabe zu vervollständigen, die in der täglichen Arbeit auftritt. Die Beherrschung dieser Methode kann eine solide Grundlage für die zukünftige String-Verarbeitung legen und viel Zeit sparen.

3.1. Zugriff auf Attribute oder Elemente von Parametern

Wenn wir str.format zum Formatieren einer Zeichenfolge verwenden, übergeben wir normalerweise die Zielzeichenfolge als Parameter an die Formatmethode. Tatsächlich können wir auch auf ein Attribut oder ein Element des Parameters in der Formatzeichenfolge zugreifen:

"Mein Auto ist {0.color}.".format(black_car)
"Der erste Schüler ist {student[0]}.".format(student=stu_list)
"John ist {d[john]} Jahre alt.".format(d=age_dict)

3.2. Parameter Ausgabekonvertierung Die Zeichenfolgenausgabe von

-Parametern wird standardmäßig durch eine eigene __format__-Methode implementiert. Das heißt, Python verwendet die __format__-Ausgabe des Parameters anstelle des Ersetzungsfelds. Wenn wir str() oder repr() aufrufen möchten, um Parameter zu konvertieren, können wir dies tun, indem wir das Konvertierungsflag hinzufügen:

# call str() on argument
"It's a {0!s}."

#call repr() on argument
"We can get info from {name!r}."

4. str .format allgemeine Form

Die allgemeine Form der Formatzeichenfolge ist wie folgt:

"... {field_name!conversion:format_spec} ... "

Wie Sie dem obigen Code entnehmen können, kann die Formatzeichenfolge in drei Teile unterteilt werden: Feldname, Konvertierung und Format_Spezifikation, die jeweils dem Ersetzungsfeldnamen (Index) und dem Konvertierungsflag entsprechen und Formatbeschreibung. Unter diesen ist der Feldname erforderlich, während die beiden letzteren optional sind. Das Konvertierungsflag folgt dem Ausrufezeichen und die Formatbeschreibung folgt dem Doppelpunkt.

Wie bereits erwähnt, kann der Feldname entweder ein Positionsindex oder ein Schlüsselwortindex sein. Auf Feldnamen können Punkte folgen, um auf Attribute zuzugreifen, oder eckige Klammern, um auf Elemente zuzugreifen.

Hier konzentrieren wir uns auf die Formatbeschreibung (format_spec).

Die Formatbeschreibung enthält 6 Optionen, nämlich Füllung, Ausrichtung, Vorzeichen, Breite, Genauigkeit und Typ. Ihre Positionsbeziehung ist wie folgt:

[[fill]align][sign][#][0][width][,][.precision][type]
fill
kann sein irgendein Zeichen, Standard ist Leerzeichen.

align
ist nur gültig, wenn eine Mindestbreite angegeben ist.

1f752e4c363994495a647bf02f26948c Nur gültig für Zahlen, zum Beispiel +0001234
^ Mittig ausgerichtet
Vorzeichen
Nur ​​gültig für Zahlen

+ Alle Zahlen sind mit Vorzeichen versehen

- Nur negative Zahlen werden mit Vorzeichen versehen (Standardoption)
Das heißt, vor Leerzeichen steht ein Leerzeichen und Negativen Zahlen wird ein Vorzeichen vorangestellt
'#'
Nur ​​gültig für ganze Zahlen

Fügen Sie automatisch die entsprechenden 0b, 0o, 0x vor binären, oktalen und hexadezimalen Werten hinzu.

','

Fügt automatisch ein ,-Trennzeichen zwischen jeweils drei Zahlen ein.

width

Dezimalzahl, die die Mindestbreite definiert. Wenn nicht angegeben, wird sie durch die Breite des Inhalts bestimmt.

Wenn die Ausrichtung nicht angegeben ist, können Sie vor der Breite eine 0 hinzufügen, um automatisch 0 zu füllen. Dies entspricht dem Setzen von Füllung auf 0 und Ausrichtung auf =.

Genauigkeit

wird verwendet, um die Genauigkeit von Gleitkommazahlen oder die maximale Länge einer Zeichenfolge zu bestimmen. Nicht verfügbar für ganzzahlige Werte.

type

bestimmt den Parametertyp, der Standardwert ist s, was eine Zeichenfolge ist.

Integer-Ausgabetyp:

b: Ausgabe im Binärformat

c: Konvertieren der Ganzzahl in das entsprechende Unicode-Zeichen
d: Ausgabe im Dezimalformat (Standardoption)
o: Ausgabe in oktaler Form
x: Ausgabe in hexadezimaler Kleinschreibung
Zahl


Ausgabetyp für dezimale Gleitkommazahlen:

e: Exponentenausgabe in wissenschaftlicher Notation , verwenden Sie e, um den Exponententeil darzustellen, die Standardgenauigkeit ist 6

E: und e ist dasselbe, verwendet aber ein großes E, um den Exponententeil darzustellen

f: Geben Sie den Wert in Festkommaform aus Die Standardgenauigkeit ist 6
F: das gleiche wie f
g: allgemeines Format für eine gegebene Genauigkeit p > Wissenschaftliche Notation (Standardoption)
G: allgemeines Format; dasselbe wie g, verwenden Sie E, um den Exponententeil darzustellen, wenn der Wert zu groß ist
n : Wie g, verwendet jedoch das Trennzeichen der aktuellen Umgebung Trennen Sie jede dreistellige Zahl
%: Prozentzeichen; verwenden Sie die Prozentform, um den Wert auszugeben, und setzen Sie das f-Zeichen

Verwandte Empfehlungen:

Detaillierte Erklärung von PHP Abfangfunktion intercept_str

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von str.format() in Python_python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn