print()

Die Funktion print() gibt Zeichenketten aus wobei andere Python-Datentypen leicht in Strings umgewandelt und formatiert werden können, z.B.:

>>> import math
>>> pi = math.pi
>>> d = 28
>>> u = pi * d
>>> print(
...     "Pi ist",
...     pi,
...     "und der Umfang bei einem Durchmesser von",
...     d,
...     "Zoll ist",
...     u,
...     "Zoll.",
... )
Pi ist 3.141592653589793 und der Umfang bei einem Durchmesser von 28 Zoll ist 87.96459430051421 Zoll.

F-Strings

Mit F-Strings lassen sich die für einen Text zu detaillierten Zahlen kürzen:

>>> print(f"Der Wert von Pi ist {pi:.3f}.")
Der Wert von Pi ist 3.142.

In {pi:.3f} wird die Format-Spezifikation f verwendet, um die Zahl Pi auf drei Nachkommastellen zu kürzen.

In A/B-Testszenarien möchtet ihr oft die prozentuale Veränderung einer Kennzahl darstellen. Mit F-Strings können sie verständlich formuliert werden:

>>> metrics = 0.814172
>>> print(f"Die AUC hat sich vergrößert auf {metrics:=+7.2%}")
Die AUC hat sich vergrößert auf +81.42%

In diesem Beispiel wird die Variable metrics formatiert, wobei = die Inhalte der Variable nach dem + übernimmt, wobei insgesamt sieben Zeichen einschließlich des Vorzeichen, metrics und des Prozentzeichens angezeigt werden. .2 sorgt für zwei Dezimalstellen, während das %-Symbol den Dezimalwert in eine Prozentzahl umwandelt. So wird 0.514172 in +51.42% umgewandelt.

Werte lassen sich auch in binäre und hexadezimale Werte umrechnen:

>>> block_size = 192
>>> print(f"Binary block size: {block_size:b}")
Binary block size: 11000000
>>> print(f"Hex block size: {block_size:x}")
Hex block size: c0

Es gibt auch Formatierungsangaben, die ideal geeignet sind für die CLI-Ausgabe, z.B.:

>>> data_types = [(7, "Data types", 19), (7.1, "Numbers", 19), (7.2, "Lists", 23)]
>>> for n, title, page in data_types:
...     print(f"{n:.1f} {title:.<25} {page: >3}")
...
7.0 Data types...............  19
7.1 Numbers..................  19
7.2 Lists....................  23

Allgemein sieht das Format folgendermaßen aus, wobei alle Angaben in eckigen Klammern optional sind:

:[[FILL]ALIGN][SIGN][0b|0o|0x|d|n][0][WIDTH][GROUPING]["." PRECISION][TYPE]

In der folgenden Tabelle sind die Felder für die Zeichenkettenformatierung und ihre Bedeutung aufgeführt:

Feld

Bedeutung

FILL

Zeichen, das zum Ausfüllen von ALIGN verwendet wird. Der Standardwert ist ein Leerzeichen.

ALIGN

Textausrichtung und Füllzeichen:

<: linksbündig
>: rechtsbündig
^: zentriert
=: Füllzeichen nach SIGN

SIGN

Vorzeichen anzeigen:

+: Vorzeichen bei positiven und negativen Zahlen anzeigen
-: Standardwert, - nur bei negativen Zahlen oder Leerzeichen bei positiven Zahlen

0b|0o|0x|d|n

Vorzeichen für ganze Zahlen:

0b: Binärzahlen
0o: Oktalzahlen
0x: Hexadezimalzahlen
d: Standardwert, dezimale Ganzzahl zur Basis 10
n: verwendet die aktuelle locale-Einstellung, um die entsprechenden Zahlentrennzeichen einzufügen

0

füllt mit Nullen auf

WIDTH

Minimale Feldbreite

GROUPING

Zahlentrennzeichen: [1]

,: Komma als Tausendertrennzeichen
_: Unterstrich für Tausendertrennzeichen

.PRECISION

Bei Fließkommazahlen die Anzahl der Ziffern nach dem Punkt
bei nicht-numerischen Werten die maximale Länge

TYPE

Ausgabeformat als Zahlentyp oder Zeichenkette

… für Ganzzahlen:

b: Binärformat
c: konvertiert die Ganzzahl in das entsprechende Unicode-Zeichen
d: Standardwert, Dezimalzeichen
n: dasselbe wie d, mit dem Unterschied, dass es die aktuelle locale-Einstellung verwendet, um die entsprechenden Zahlentrennzeichen einzufügen
o: Oktalformat
x: Hexadezimalformat zur Basis 16, wobei für die Ziffern über 9 Kleinbuchstaben verwendet werden
X: Hexadezimalformat zur Basis 16, wobei für die Ziffern über 9 Großbuchstaben verwendet werden

… für Fließkommazahlen:

e: Exponent mit e als Trennzeichen zwischen Koeffizient und Exponent
E: Exponent mit E als Trennzeichen zwischen Koeffizient und Exponent
g: Standardwert für Fließkommazahlen, wobei der Exponent eine feste Breite für große und kleine Zahlen erhält
G: Wie g, wechselt aber zu E, wenn die Zahl zu groß wird. Die Darstellungen von Unendlich und NaN werden ebenfalls in Großbuchstaben geschrieben
n: Wie g mit dem Unterschied, dass es die aktuelle locale-Einstellung verwendet, um die die entsprechenden Zahlentrennzeichen einzufügen
%: Prozentsatz. Multipliziert die Zahl mit 100 und zeigt sie im festen Format f an, gefolgt von einem Prozentzeichen

Tipp

Eine gute Quelle für F-Strings ist die Hilfe-Funktion:

>>> help()
help> FORMATTING
...

Ihr könnt die Hilfe hier durchblättern und viele Beispiele finden.

Mit :q und könnt ihr die Hilfe-Funktion wieder verlassen.

Fehlersuche in F-Strings

In Python 3.8 wurde ein Spezifizierer eingeführt, der bei der Fehlersuche in F-String-Variablen hilft. Durch Hinzufügen eines Gleichheitszeichens = wird der Code innerhalb des F-Strings aufgenommen:

>>> uid = "veit"
>>> print(f"My name is {uid.capitalize()=}")
My name is uid.capitalize()='Veit'

Formatierung von Datums-, Zeitformaten und IP-Adressen

datetime unterstützt die Formatierung von Zeichenketten mit der gleichen Syntax wie die strftime-Methode für diese Objekte.

>>> import datetime
>>> today = datetime.date.today()
>>> print(f"Today is {today:%d %B %Y}.")
Today is 26 November 2023.

Das ipaddress-Modul von Python unterstützt auch die Formatierung von IPv4Address- und IPv6Address-Objekten.

Schließlich können Bibliotheken von Drittanbietern auch ihre eigene Unterstützung für die Formatierung von Strings hinzufügen, indem sie eine __format__-Methode zu ihren Objekten hinzufügen.