Formatierte Zeichenketten

2.4.2. Formatierte Zeichenketten#

Bei den bisherigen Textausgaben wurden immer unformatierte Zeichenketten verwendet. Es ist jedoch oft nützlich das Ausgabeformat zu kontrollieren, z.B. um die Anzahl der Nachkommastellen zu reduzieren. Hierzu können formatierte Zeichenketten verwendet werden.

Definition#

Eine formatierte Zeichenkette kann in Python mit einem vorgesetzten f vor den Anführungsstrichen erstellt werden (f-Strings). Platzhalter, welche durch Werte eingesetzt werden sollen, werden mit geschweiften Klammern {} angegeben und mit Formattierungsinformationen versehen. Neben der Formatierung wird auch der Variablenname angegeben, dessen Wert ausgegeben werden soll.

Das Formatierungsformat innerhalb der Klammer ist, vereinfacht dargestellt,

{Variabelname:PlatzbedarfAusgabetyp}

Beispiel:

# Erstellung einer formatierten Zeichenkette ohne 
# zusätzliche Formatierung
a = 5
b = 7
verhaeltnis = a / b
s1 = f"Das Verhältnis von {a} zu {b} ist {verhaeltnis}"
print(s1)
Das Verhältnis von 5 zu 7 ist 0.7142857142857143
# Explizite Angabe der darzustellenden Nachkommastellen, 
# hier zwei Stellen einer Gleitkommazahl `f`
s2 = f"Das Verhältnis von {a} zu {b} ist {verhaeltnis:.2f}"
print(s2)
Das Verhältnis von 5 zu 7 ist 0.71
# Formatierung des Platzbedarfs
import math

# Erstelle Tabellenkopf
print('Zahl\tWurzel')
print('='*15)

# Schleife über einige Zahlen mit formatierter Ausgabe 
# der Quadratwurzel
for i in range(0, 200, 13):
    sqi = math.sqrt(i)
    
    # Format `3d`: ganze Zahl (`d`) mit drei Stellen (`3`)
    # Format `7.4f`: insgesamt 7 Stellen mit 
    #                4 Nachkommastellen einer Gleitkommazahl
    print(f"{i:3d}\t{sqi:7.4f}")
Zahl	Wurzel
===============
  0	 0.0000
 13	 3.6056
 26	 5.0990
 39	 6.2450
 52	 7.2111
 65	 8.0623
 78	 8.8318
 91	 9.5394
104	10.1980
117	10.8167
130	11.4018
143	11.9583
156	12.4900
169	13.0000
182	13.4907
195	13.9642

Formatierung#

Einige häufig verwendete Formatierungen sind:

  • für ganze Zahlen, Ausgabetyp d

  • nd: es werden n-Stellen für die Ausgabe verwendet

  • 0nd: n-Stellen, wobei die Leerstellen mit Nullen aufgefüllt werden

  • +d: Ausgabe des Vorzeichens, auch bei positiven Zahlen

  • für Gleitkommazahlen, Ausgabetyp f und e

  • .mf: es werden m-Stellen für die Nachkommastellen genutzt

  • n.mf: es werden insgesamt n-Stellen verwendet, wobei m-Stellen für die Nachkommastellen genutzt werden

  • n.me: genauso wie oben, aber die Ausgabe erfolgt in exponentieller Schreibweise

  • für Zeichenketten, Ausgabetyp s

  • ns: es werden insgesamt n-Stellen verwendet

  • <ns, >ns, ^ns: wie oben, jedoch wird die Zeichenkette linksbündig, rechtsbündig bzw. zentriert platziert

Alternativen#

Wie jede Programmiersprache entwickelt sich Python kontinuierlich. Die Erzeugung von formatierten Zeichenketten mit dem obigen Verfahren (f-Strings) ist seit Version 3.6 möglich. Der in Version 2 verwendete Formalismus nutzt das % um Platzhalter zu definieren und trennt die Vorlage der Zeichenkette von den einzusetzenden Werten.

s3 = "Das Verhältnis von %d zu %d ist %f"%(a, b, verhaeltnis)
print(s3)
Das Verhältnis von 5 zu 7 ist 0.714286

Seit Version 3 hat die string Klasse die format Methode, welche bereits ähnlich zu den oben eingeführten f-Strings ist.

s4 = "Das Verhältnis von {:d} zu {:d} ist {:f}".format(a, b, verhaeltnis)
print(s4)
Das Verhältnis von 5 zu 7 ist 0.714286

Beide Ansätze werden aus Kompatibilitätsgründen auch von aktuellen Versionen von Python unterstützt.