Nachdem Sie nun verschiedene Ausrichtungstechniken kennengelernt haben, wenden wir sie an, um gut formatierte Tabellen zu erstellen. Tabellen sind eine gängige Methode, um strukturierte Daten in einem lesbaren Format darzustellen, und eine korrekte Ausrichtung ist entscheidend für die effektive Präsentation tabellarischer Informationen.
Einfache Tabelle mit Spalten fester Breite
Beginnen wir mit der Erstellung einer einfachen Tabelle mit Spalten fester Breite.
- Erstellen Sie eine neue Datei mit dem Namen
simple_table.py
im Verzeichnis /home/labex/project
:
## simple_table.py
print("Einfache Tabelle fester Breite")
print("-" * 50)
## Daten definieren
header = ["Name", "Alter", "Stadt", "Beruf"]
data = [
["John Smith", 34, "New York", "Arzt"],
["Sarah Johnson", 28, "San Francisco", "Ingenieurin"],
["Michael Brown", 42, "Chicago", "Lehrer"],
["Emily Davis", 31, "Boston", "Wissenschaftlerin"]
]
## Kopfzeile ausgeben
print(f"{header[0]:<20} {header[1]:<8} {header[2]:<15} {header[3]:<15}")
print("-" * 60)
## Zeilen ausgeben
for row in data:
print(f"{row[0]:<20} {row[1]:<8} {row[2]:<15} {row[3]:<15}")
- Speichern Sie die Datei und führen Sie sie aus:
python3 ~/project/simple_table.py
- Sie sollten eine gut formatierte Tabelle wie diese sehen:
Einfache Tabelle fester Breite
--------------------------------------------------
Name Alter Stadt Beruf
------------------------------------------------------------
John Smith 34 New York Arzt
Sarah Johnson 28 San Francisco Ingenieurin
Michael Brown 42 Chicago Lehrer
Emily Davis 31 Boston Wissenschaftlerin
Dynamische Tabelle mit verschiedenen Ausrichtungstypen
Unterschiedliche Datentypen sehen oft mit verschiedenen Ausrichtungsstilen besser aus. Beispielsweise werden Texte häufig linksbündig und Zahlen rechtsbündig ausgerichtet. Erstellen wir nun eine komplexere Tabelle mit gemischten Ausrichtungen.
- Erstellen Sie eine neue Datei mit dem Namen
dynamic_table.py
im Verzeichnis /home/labex/project
:
## dynamic_table.py
print("Dynamische Tabelle mit gemischter Ausrichtung")
print("-" * 50)
## Daten definieren
header = ["Produkt", "Preis", "Menge", "Gesamt"]
produkte = [
["Laptop", 1299.99, 3, 3899.97],
["Maus", 24.50, 10, 245.00],
["Monitor", 349.95, 2, 699.90],
["Tastatur", 49.99, 5, 249.95],
["Kopfhörer", 89.95, 4, 359.80]
]
## Spaltenbreiten basierend auf Inhalten berechnen
spaltenbreiten = [
max(len(str(header[0])), max(len(str(zeile[0])) for zeile in produkte)) + 2,
max(len(str(header[1])), max(len(f"${zeile[1]:.2f}") for zeile in produkte)) + 2,
max(len(str(header[2])), max(len(str(zeile[2])) for zeile in produkte)) + 2,
max(len(str(header[3])), max(len(f"${zeile[3]:.2f}") for zeile in produkte)) + 2
]
## Kopfzeile ausgeben
print(f"{header[0]:<{spaltenbreiten[0]}}"
f"{header[1]:>{spaltenbreiten[1]}}"
f"{header[2]:>{spaltenbreiten[2]}}"
f"{header[3]:>{spaltenbreiten[3]}}")
print("-" * sum(spaltenbreiten))
## Zeilen mit der entsprechenden Ausrichtung ausgeben
for produkt in produkte:
print(f"{produkt[0]:<{spaltenbreiten[0]}}",
f"${produkt[1]:.2f}".rjust(spaltenbreiten[1]),
f"{produkt[2]}".rjust(spaltenbreiten[2]),
f"${produkt[3]:.2f}".rjust(spaltenbreiten[3]))
## Zusammenfassung ausgeben
gesamtmenge = sum(produkt[2] for produkt in produkte)
gesamtbetrag = sum(produkt[3] for produkt in produkte)
print("-" * sum(spaltenbreiten))
print(f"{'GESAMT':<{spaltenbreiten[0]}}",
f"".rjust(spaltenbreiten[1]),
f"{gesamtmenge}".rjust(spaltenbreiten[2]),
f"${gesamtbetrag:.2f}".rjust(spaltenbreiten[3]))
... (restliche Code-Abschnitte)