String-Formatierung in Python

In Python existieren verschiedene Möglichkeiten der String-Formatierung. Dies liegt daran, dass die Formatierung historisch gewachsen ist.

%-Operator

Den Anfang machten Formatierungszeichen wie beispielsweise %s. Folgendes Beispiel verdeutlicht die Anwendung:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

name = 'Jessica'

print("My name is %s." % (name))
# -> My name is Jessica.

Die Verwendung des %-Operators kann man als den alten Stil der String-Formatierung bezeichnen. Er ist sozusagen aus der Mode gekommen und sollte nicht mehr verwendet werden. Der Vollständigkeit halber wollte ich ihn aber erwähnt haben.

format()

Mit der Methode format() brach dann eine neue Zeit an. Nachfolgend obiges Beispiel im neuen Stil:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

name = 'Jessica'

print("My name is {}.".format(name))
# -> My name is Jessica.

Die „0“ in {0} könnte hier auch weggelassen werden, da nur eine Variable vorkommt. Die Zeile

print("My name is {}.".format(name))

würde also zum gleichen Ergebnis führen. Beim Vorhandensein mehrere Variablen kann die Nummerierung aber erforderlich sein, um zu kennzeichnen, in welcher Reihenfolge die Variablen ausgewertet werden sollen.

Bei folgenden Beispielen wurde eine zweite Variable age hinzugefügt, um zu zeigen, wie eine geänderte Nummerierung die Ausgabe beeinflußt.

print("My name is {} and I am {} years old.".format(name, age))
# -> My name is Jessica and I am 34 years old.

print("My name is {0} and I am {1} years old.".format(name, age))
# -> My name is Jessica and I am 34 years old.

print("My name is {1} and I am {0} years old.".format(name, age))
# -> My name is 34 and I am Jessica years old.

f-String

Mit Python 3.6 wurden die f-Strings eingeführt. Sie erlauben eine sehr komfortable Art der Formatierung, die als String Interpolation bezeichnet wird. Nachfolgend obiges Beispiel in dieser Art der Formatierung:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

name = 'Jessica'
age = '34'

print(f"My name is {name} and I am {age} years old.")

Es ist sofort erkennbar, dass diese Art der Formatierung deutlich lesbarer ist. So ist es auch nicht verwunderlich, dass sie in meinen neueren Python-Projekten zur Bevorzugten Art der String-Formatierung wurde.