Ausgaben formatieren
Wenn wir ein Programm ausführen, dann erwarten wir typischerweise, dass das Programm uns am Ende ein Resultat liefert. Das Resultat kann von ganz verschiedener Form sein. Manchmal ist dieses Resultat einfach ein Text, den wir auf dem Bildschirm ausgeben. Viel häufiger aber möchten wir die Daten in einer Datei speichern, die wir später weiterverarbeiten wollen. Grundsätzlich haben wir zwei Möglichkeiten Dateien zu schreiben. Eine Möglichkeit ist, die Dateien in einem Binärformat zu speichern, dass nur für Computer lesbar ist. Eine zweite Möglichkeit besteht darin, die Daten als Texte (also Strings) zu speichern. Das Speichern als Text hat den Vorteil, dass wir diese auch als Menschen lesen können. Zudem können viele Programme gut mit Texten umgehen. Wir werden deshalb hier nur behandeln, wie wir textuelle Daten aufbereiten und speichern. In jedem Fall ist es aber äusserst wichtig, dass wir die Daten bevor wie diese in die Datei schreiben so formatieren, so dass das Lesen der Datei möglichst einfach wird.
Beispiel: Das CSV Format
Ein weitverbreitetes Dateiformat für Texte ist das CSV Format. CSV wird zum Beispiel von Matlab, R und Excel unterstützt und für fast jede Programmiersprache existieren Bibliotheken, die das Lesen solcher Dateien vereinfacht. Die Abkürzung CSV steht für Comma Separated Values. Bei diesem Format werden tabellarische Daten zeilenweise geschrieben. Die einzelnen Felder der Tabelle werden dabei durch Kommas getrennt.
Angenommen wir haben folgende Daten:
Name | Geburtsjahr | Grösse | Gewicht |
---|---|---|---|
Anna | 2001 | 1.61 | 63 |
Peter | 2011 | 1.82 | 85 |
Diese würden im CSV Format wie folgt abgespeichert werden:
Anna,2001,1.61,63
Peter,2011,1.82, 85
Die Felder werden also durch ein ,
getrennt, und die einzelnen Zeilen entsprechen einzelnen Datensätzen.
Texte formatieren mit Python
Python stellt uns verschiedene Möglichkeiten zur Verfügung um solchen Ausgabetext zu formatieren. In diesem Artikel lernen wir eine davon kennen, nämlich die format Methode, die für Strings definiert ist. Damit können wir auf komfortable und flexible Art und Weise komplexe Ausgaben aufbereiten.
Die Format Methode
Wenn wir einen Text in Python schreiben indem wir diesen "wie diesen Text"
in Anführungs- und Schlusszeichen setzen, definieren wir uns intern eine Instanz der Klasse String
. Auf dieser sind
verschiedene Methoden definiert. Eine dieser Methoden ist die Format Methode:
"ein text".format()
Die format Methode funktioniert wie folgt: Innerhalb des Strings können wir mit den Klammern {}
Platzhalter einfügen. Als Argumente für die format Methode geben wir dann die Werte an, mit denen
wir diese Platzhalter ersetzen wollen. Das erste Argument wird dann an die Position des ersten Platzhalters
geschrieben, das zweite Argument an die Position des zweiten Platzhalters, und so weiter.
Das folgende Beispiel definiert den Text Ein Kreis mit Radius 2 hat die Fläche 12.566370614359172.
import math
radius = 2
print("Ein Kreis mit Radius {} hat die Fläche {}.".format(radius, radius**2 * math.pi))
Wie wir sehen, können wir als Argumente auch Ausdrücke angeben um die Werte zu berechnen.
Um eine Liste oder Tupel von Daten in CSV Format umzuwandeln, also die einzelnen Felder durch Kommas zu trennen können wir folgendes schreiben:
data = ("Peter", 2011, 1.82, 85)
"{}, {}, {}, {}".format(data[0], data[1], data[2], data[3])
Manchmal möchten wir auch ein Argument an mehreren Stellen verwenden. Um dies zu machen können wir den Platzhaltern eine Nummer geben. Das erste Argument wir dann in die Platzhalter mit dem Index 0 geschrieben, und so weiter. Dies ist in folgendem Beispiel illustriert:
"{0} und {1} und nochmals {0}".format("Hans", "Peter")
Die Ausgabe ist in diesem Fall Hans und Peter und nochmals Hans
.
Python erlaubt uns zudem, das Zahlenformat in der Ausgabe zu kontrollieren, also zum Beispiel die Breite des Feldes, oder die Anzahl Nachkommastellen einer Gleitkommazahl, zu bestimmen. Dazu geben wir nach dem Index vom Platzhalter durch
:
getrennt spezielle Formatierungszeichen an:
data = ("Peter", 2011, 1.82, 85)
"{0:10}, {1:6d}, {2:7.3f}, {3}".format(data[0], data[1], data[2], data[3])
Obiger Code führt zur Ausgabe:
Peter , 2011, 1.820, 85
In diesem Beispiel geben wir an, dass das erste Feld 10 Zeichen lang sein soll. Im zweiten Feld spezifizieren wir, dass es sich um eine Ganzzahl handelt, die immer 6 Stellen lang ist. Im dritten Feld hingegen spezifizieren wir, dass die Ausgabe eine Gleitkommazahl ist, welche mindestens 7 Zeichen Platz einnimmt, und nach dem Punkt jeweils 3 stellen.
Es ist uns an dieser Stelle nicht wichtig, dass Sie diese Formatierungszeichen auswendig wissen. Stattdessen, sollten Sie anhand von Beispielen diese auf Ihren speziellen Fall adaptieren können. Auf dieser Seite ist diese kleine "Formatierungssprache" dokumentiert und anhand vieler Beispiele illustriert.
Am besten Sie experimentieren gleich selbst mit der Formatierung von Ausgaben: