Python String-Formate

In diesem Tutorial lernst du, wie man mit Python Strings formatiert. Falls du Anfänger bist, solltest du dich zuerst mit der print-Funktion vertraut machen. Außerdem solltest du verstanden haben, was Strings sind und wie sie funktionieren.

Edley Insights

Strings und Variablen in Python

Mit der print-Funktion kannst du Zeichenketten (Strings) direkt auf dem Bildschirm ausgeben. Dafür musst du die Zeichenkette nur in Anführungszeichen setzen.

Außerdem ist es möglich, Variablen damit auszugeben. Dazu musst du den entsprechenden Variablennamen ohne Anführungszeichen in die Klammer schreiben. Diese Form der Ausgabe ermöglicht es, alle verschiedene Datentypen auszugeben.

Es kommt jedoch vor, dass du sowohl eine Zeichenkette als auch ein Variable zusammen ausgeben musst – beispielsweise um ein Ergebnis einer Berechnung anzuzeigen und den Anwender gleichzeitig darauf hinzuweisen, was dieses zu bedeuten hat.

Operator Plus und Komma

Wenn die Variablen vom Typ String sind, wird dafür häufig der Operator Plus (+) verwendet. Damit lassen sich zwei Zeichenketten hervorragend verbinden. Bei anderen Variablentypen ist dies jedoch nicht möglich. Diese musst du mit einem Komma (,) abtrennen. Das folgende Programm verdeutlicht dies:

a = "Hallo"
b = 5
print ("Wert der Variablen a: "+a)
print ("Wert der Variablen a:",a)
print ("Wert der Variablen b:",b)

Die Ausgabe:

Wert der Variablen a: Hallo

Wert der Variablen a: Hallo

Wert der Variablen b: 5

Bei der Variablen a handelt es sich um eine Zeichenkette, nämlich "Hallo". Daher können wir diese sowohl mit dem Pluszeichen als auch mit dem Komma einfügen.

Der Wert der Variablen b ist hingegen eine Ganzzahl, nämlich 5. Daher würde es zu einer Fehlermeldung führen, wenn du dabei das Pluszeichen verwendest. Es bleibt also nur die Möglichkeit, das Komma zu verwenden.

Leerzeichen

Wenn du den Code genau betrachtest, stellst du fest, dass in der ersten print-Funktion hinter dem Doppelpunkt ein Leerzeichen steht, in der zweiten hingegen nicht.

a = "Hallo" 
b = 5 
print ("Wert der Variablen a: "+a) 
print ("Wert der Variablen a:",a) 
print ("Wert der Variablen b:",b)

Die Ausgabe ist jedoch absolut identisch: Wert der Variablen a: Hallo

Das liegt daran, dass das Pluszeichen in Python die beiden Strings (Zeichenketten) miteinander verbindet, ohne ein Leerzeichen einzufügen. Wenn du hingegen das Komma verwendest, fügt der Python-Interpreter automatisch ein Leerzeichen ein.

Das Problem

Das kann manchmal zu Problemen führen. Diese bemerkst du beispielsweise, wenn du den Satzbau bei der Ausgabe der Ergebnisse umstellen willst. Wenn du anstatt der Struktur mit dem Doppelpunkt einen ganzen, grammatikalisch korrekten Satz verwenden willst, dann müsstest du nach der Ausgabe der Variablen einen Punkt hinzufügen. Bei der Verwendung des Plus-Operators stellt das kein Problem dar und das Ergebnis wird auf der Konsole richtig dargestellt. Bei der Ausgabe der Variablen b kannst du jedoch nur das Komma verwenden.

a = "Hallo"

b = 5



print ("Der Wert der Variablen a beträgt "+a+".")
print ("Der Wert der Variablen b beträgt ",b,".")

Das führt dazu, dass zwischen der Zahl und dem Punkt ein Leerzeichen steht. Die Darstellung sieht dann nicht korrekt formatiert aus:

Wert der Variablen a beträgt Hallo.

Wert der Variablen a beträgt  5 .

Die Lösung: String-Format mit dem Modulo-Operator ändern

Es gibt in Python verschiedene Möglichkeiten, um dieses Problem zu umgehen. Du kannst beispielsweise (wie im Kurs beschrieben) die Variable b zunächst in eine Zeichenkette (String) umwandeln und diese dann mit dem Pluszeichen mit den übrigen Bestandteilen verbinden. Das ist jedoch recht kompliziert.

Darüber hinaus gibt es eine weitere Methode, um die Ausgaben zu formatieren. Diese gibt dir nicht nur volle Kontrolle über die Leerzeichen bei allen Variablentypen, sondern kann darüber hinaus den Code deutlich kürzer gestalten.

Wie du diese anwendest, siehst du im folgenden Beispiel:

a = "Hallo"
b = 5


print ("Der Wert der Variablen a beträgt %s."%a)
print ("Der Wert der Variablen b beträgt %d."%b)

Die Ausgabe:

Wert der Variablen a beträgt Hallo.

Wert der Variablen a beträgt 5.

Bei dieser Art der Formatierung der Ausgabe musst du für jede Variable einen Platzhalter einfügen. Dieser steht ebenfalls innerhalb der Anführungszeichen. Du musst ihn durch das Prozentzeichen (%) kenntlich machen. Danach steht ein Buchstabe, der den Variablentyp ersichtlich macht. Der Buchstabe s steht dabei für Zeichenketten (string) und d für ganze Zahlen (decimal). Solltest du eine Fließkommazahl (float) einfügen wollen, musst du diese mit dem Buchstaben f kennzeichnen.

Nachdem du die Anführungszeichen geschlossen hast, musst du nochmals das Prozentzeichen (%) und danach die Variable, die du für den Platzhalter einfügen willst, angeben. Auf diese Weise lässt sich der Inhalt ohne das unerwünschte Leerzeichen ausgeben. Außerdem ersparst du es dir, die Anführungszeichen mehrfach zu öffnen und zu schließen.

Anwendung

Besonders praktisch ist diese Form der Formatierung, wenn sich Textbausteine und mehrere Variablen abwechseln. Bei der herkömmlichen Form müsstest du dafür viele Male die Anführungszeichen öffnen und schließen. Das bringt nicht nur viel Arbeit mit sich, sondern ist auch anfällig für Fehler. Mit der eben beschriebenen Methode kannst du jedoch auch mehrere Platzhalter in den Text einfügen. Nachdem du die Anführungszeichen geschlossen hast, folgt wieder das Prozentzeichen. Danach stehen in einer Klammer alle Variablen, die du einfügen willst – jeweils durch ein Komma getrennt. Die Reihenfolge muss da- bei die gleiche sein, wie im Text.

a = "Hallo"
b = 5
c = 4.56
d = 6
e = "Tschüss!"
print ("Die Werte der Variablen betragen %s für a, %d für b, %f für c, %d für d und %s für e."%(a,b,c,d,e))

Format ändern mit String-Methoden

Eine weitere Möglichkeit um Strings in Python zu formatieren, sind String-Methoden. (Wie Methoden funktionieren, lernst du in einem anderen Beitrag oder im Python-Kurs.) Dennoch sollen hier zwei String-Methoden gezeigt werden, die für die Formatierung von Strings in Python besonders wichtig sind:

capitalize()

Mit der capitalize()-Methode wird der Buchstabe an erster Stelle eines Strings (Zeichenkette) als Großbuchstabe formatiert. Ein Beispiel:

text = "hallo welt!"

print (text)

Führt zur Ausgabe: hallo welt!


text = "hallo welt!"


print (text.capitalize())

Führt zur formatierten Ausgabe: Hallo welt!

upper()

Mit der upper()-Methode lassen sich die Kleinbuchstaben in einem String in das Format Großbuchstaben umwandeln. Ein Beispiel:

text = "hallo welt!"

print (text)

Führt zur Ausgabe: hallo welt!


text = "hallo welt!"


print (text.upper())

Führt zur formatierten Ausgabe: HALLO WELT!


Weitere Möglichkeiten, um mit Python Strings zu formatieren lernst du im Python Komplettkurs (Deutsch) oder in diesem Artikel (Englisch).

Edley Insights