Fabelhafte Formatierung: f-strings in Python

Mi, 27. April 2022, Ralf Hersel

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