Fabelhafte Formatierung: f-strings in Python

  Ralf Hersel   Lesezeit: 4 Minuten  🗪 1 Kommentar

Ein paar Geheimnisse der formatierten String Literale in Python.

fabelhafte formatierung: f-strings in python

Als begeisterter Python-Fan, scheue ich mich nicht, ab und zu einen Artikel zu dieser Programmiersprache zu schreiben. Obwohl ich kein ausgebildeter Entwickler bin, habe ich dennoch ein paar hundert Programme in meinem Leben geschrieben. Für mich gehört ein Grundverständnis der Programmierung zum Kanon einer jeden Schülerin; genauso wie Lesen, Schreiben, Fahrradfahren und Schwimmen. Und was bietet sich dafür besser an als die leicht erlernbare, gut lesbare und hervorragend dokumentierte Sprache Python. Doch bevor ich hier zu orgastisch werde, komme ich zum Thema.

Dabei geht es nur um einen ganz einfachen Teil der Programmierung, nämlich der formatierten Ausgabe von Strings (Texten). Python bietet dafür viele Möglichkeiten, die sich jedoch im Funktionsumfang und der Ausführungsgeschwindigkeit erheblich voneinander unterscheiden. Der Auslöser für diesen Beitrag war ein 'Lesefoo' in der 294. Ausgaben des Binärgewitter-Podcasts.

Wer die Beispiele dieses Artikels selbst ausprobieren möchte, startet einfach im Linux-Terminal den Python-Interpreter, entweder mit 'python' oder 'python3'. Das sieht dann so aus:

ralf@ralf-laptop:~$ python3
Python 3.8.10 (default, Mar 15 2022, 12:22:08) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Nun können Python-Befehle eingegeben und ausgeführt werden. Beginnen wir mit einem einfachen Text-String und dessen Ausgabe:

>>> vorname = 'Ralf'
>>> print(vorname)
Ralf

Diese Ausgabe ist nicht formatiert; es wird nur der Wert der Variable 'vorname' mittels der print()-Funktion ausgegeben. Zu einer formatierten Ausgabe wird es, wenn ich einen f-string verwende:

>>> print(f'{vorname}')
Ralf

Im oben gezeigten Beispiel ändert sich nichts, weil ich keine Angaben zur Formatierung gemacht habe. Dies soll sich jetzt ändern. Nach der Definition von Vorname und Nachname möchte ich die Werte zentriert, links- und rechtsbündig ausgeben. Dies gelingt mit den Format-Angaben ^ < >.

>>> vorname, nachname = 'Ralf', 'Hersel'
>>> print(f'{vorname:^20}')
        Ralf
>>> print(f'{vorname:>20}{nachname:>20}')
                Ralf              Hersel
>>> print(f'{vorname:<20}{nachname:<20}')
Ralf                Hersel 

Auch bei Zahlen bieten die f-strings einiges:

>>> f, n, m = 123.45, 123, 123456789
>>> print(f'{f:.4f}')
123.4500
>>> print(f'{n:08}')
00000123
>>> print(f'{m:,}')
123,456,789

Weiter geht es mit der Datums-Formatierung:

>>> import datetime
>>> heute = datetime.datetime.today()
>>> print(f'{heute:%Y-%m-%d}')
2022-04-26
>>> print(f'{heute:%Y}')
2022
>>> print(f'{heute:%x}')
04/26/22
>>> print(f'{heute:%X}')
20:44:19

Spannend finde ich auch die Debug-Funktion:

>>> print(f"{vorname = }, {nachname = }")
vorname = 'Ralf', nachname = 'Hersel'

Weitere Angaben zu den Formatierungsoptionen finden sich in der Python-Dokumentation. In der Quelle seht ihr noch mehr interessante Beispiele zur verschachtelten Formatierung und zur bedingten Formatierung:

Quelle: https://martinheinz.dev/blog/70

Tags

Python, Programmierung, F-Strings, Formatierung, Ausgabe, Strings, String

cambid83
Geschrieben von cambid83 am 27. April 2022 um 18:54

Hallo Ralf Vielen Dank für die nette Übersicht der F-Strings in Python.

Python2 ist zwar inzwischen nicht mehr unterstützt und wird nicht weiterentwickelt, aber es findet sich leider noch an vielen Stellen im Einsatz und wird auch z. B. von SLES15 noch unterstützt.

Daher der wichtige Hinweis: F-Strings gehen erst in der Version 3.6.

cambid83