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 |
|---|---|
|
Zeichen, das zum Ausfüllen von |
|
Textausrichtung und Füllzeichen: <: linksbündig>: rechtsbündig^: zentriert=: Füllzeichen nach SIGN |
|
Vorzeichen anzeigen: +: Vorzeichen bei positiven und negativen
Zahlen anzeigen-: Standardwert, - nur bei negativen Zahlen
oder Leerzeichen bei positiven Zahlen |
|
Vorzeichen für ganze Zahlen: 0b: Binärzahlen0o: Oktalzahlen0x: Hexadezimalzahlend: Standardwert, dezimale Ganzzahl zur Basis 10n: verwendet die aktuelle
locale-Einstellung, um die entsprechenden
Zahlentrennzeichen einzufügen |
|
füllt mit Nullen auf |
|
Minimale Feldbreite |
|
Zahlentrennzeichen: [1] ,: Komma als Tausendertrennzeichen_: Unterstrich für Tausendertrennzeichen |
|
Bei Fließkommazahlen die Anzahl der Ziffern nach
dem Punkt
bei nicht-numerischen Werten die maximale Länge
|
|
Ausgabeformat als Zahlentyp oder Zeichenkette … für Ganzzahlen: b: Binärformatc: konvertiert die Ganzzahl in das
entsprechende Unicode-Zeichend: Standardwert, Dezimalzeichenn: dasselbe wie d, mit dem Unterschied,
dass es die aktuelle locale-Einstellung
verwendet, um die entsprechenden Zahlentrennzeichen
einzufügeno: Oktalformatx: Hexadezimalformat zur Basis 16, wobei für
die Ziffern über 9 Kleinbuchstaben verwendet werdenX: 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 ExponentE: Exponent mit E als Trennzeichen zwischen
Koeffizient und Exponentg: Standardwert für Fließkommazahlen, wobei der
Exponent eine feste Breite für große und
kleine Zahlen erhältG: Wie g, wechselt aber zu E, wenn
die Zahl zu groß wird. Die Darstellungen von
Unendlich und NaN werden ebenfalls in Großbuchstaben
geschriebenn: 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- und Zeitformaten¶
datetime unterstützt die Formatierung von Zeichenketten mit der
gleichen Syntax wie die datetime.strftime-Methode für diese Objekte.
>>> import datetime
>>> import locale
>>> locale.setlocale(locale.LC_TIME, "de_DE.utf-8")
'de_DE.utf-8'
>>> today = datetime.date.today()
>>> print(f"Heute ist {today:%A, %d. %B %Y}.")
Heute ist Freitag, 11. Juli 2025.
Umgekehrt könnt ihr mit datetime.strptime
auch Zeichenketten in datetime-Objekte umwandeln:
>>> today_string = "Fri, 11 Jul 2025 18:46:49"
>>> today = datetime.datetime.strptime(today_string, "%A, %d. %B %Y")
>>> today_string = "Fri, 11 Jul 2025 18:46:49"
>>> today = datetime.datetime.strptime(today_string, "%A, %d. %B %Y")
Beschreibung |
Beispiel |
Format |
|---|---|---|
ISO 8601 |
2025-07-11T18:46:49 |
%Y-%m-%dT%H:%M:%S |
ISO 8601 mit Zeitzone |
2025-07-11T18:46:49+0100 |
%Y-%m-%dT%H:%M:%S%z |
RFC 2822 |
Fr, 11 Jul 2025 18:46:49 |
%a, %d %b %Y %H:%M:%S |
RFC 3339 mit Zeitzone |
2025-07-11 18:46:49+0100 |
%Y-%m-%d %H:%M:%S%z |
Formatierung von IP-Adressen¶
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.