HOWTO · Python
Drucken mit Spaltenausrichtung in Python
Erfahren Sie, wie Sie Spalten in Python mit print(), format(), f-strings und Bibliotheken wie tabulate und pandas ausrichten. Dieser Leitfaden behandelt Techniken zum Formatieren tabellarischer Daten und sorgt für eine saubere, gut lesbare Ausgabe. Perfekt für Python-Entwickler!
Auf dieser Seite
Die Funktion print() hat sich in Python weiterentwickelt: In Python 2 war sie eine Anweisung, in Python 3 ist sie eine Funktion. Eine korrekt formatierte Ausgabe sorgt für Übersichtlichkeit, insbesondere bei tabellarischen Daten.
Dieses Tutorial stellt verschiedene Methoden vor, um in Python mit Spaltenausrichtung zu drucken. Wenn Sie mehrere Argumente effizient ausgeben und dabei Spalten ausrichten müssen, lesen Sie unseren Leitfaden zum Drucken mehrerer Argumente in Python.
Spaltenausrichtung mit der %-Formatierung
Die %-Formatierung ist eine der ältesten Methoden, Zeichenketten zu formatieren. Mit %-*s lässt sich ein Abstand definieren, der als Spaltenbreite dient. Der Abstand muss für jede Zeile manuell angepasst werden.
Beispiel:
print("First Name: %-*s Last Name: %s" % (13, "Jim", "Clark"))
print("Age: %-*s Website: %s" % (20, "42", "DelftStack.com"))
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
Diese Methode bietet eine einfache Ausrichtung, erfordert aber sorgfältige Anpassungen der Abstände. Der %-Operator erlaubt eine dynamische Spaltenbreite über %-*s, wobei * für eine zur Laufzeit bestimmte Breite steht. Allerdings muss der Abstand für jeden Wert manuell gesetzt werden, was die Methode weniger flexibel macht als neuere Formatierungstechniken.
Spaltenausrichtung mit format()
Die Funktion format() bietet eine flexiblere Möglichkeit, Text innerhalb von Spalten auszurichten. Indem wir Felder mit fester Breite in den geschweiften Klammern definieren, stellen wir eine gleichmäßige Spaltenausrichtung sicher.
Beispiel:
print("{:<10} {:<5} {:<15}".format("First Name:", "Jim", "Last Name: Clark"))
print("{:<10} {:<5} {:<15}".format("Age:", "42", "Website: DelftStack.com"))
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
Mit {:<10} {:<5} {:<15} geben wir Felder mit fester Breite an, die den Text strukturiert ausrichten. Diese Methode stellt sicher, dass der Text unabhängig von seiner Länge korrekt formatiert wird.
Wenn Sie neben der Spaltenausrichtung auch Zahlen formatieren, könnte unser Leitfaden zum Formatieren von Zahlen mit Kommas in Python hilfreich sein.
Spaltenausrichtung mit f-Strings
f-Strings wurden in Python 3.6 eingeführt und bieten eine kompakte und gut lesbare Möglichkeit, Text zu formatieren, und unterstützen dabei Ausrichtungsangaben.
Beispiel:
print(f"{'First Name: ' + 'Jim':<25} Last Name: {'Clark'}")
print(f"{'Age: ' + '42':<25} Website: {'DelftStack.com'}")
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
f-Strings bieten eine intuitive Formatierung bei geringem Schreibaufwand. Die Methode unterstützt die Ausrichtung genau wie format(), mit :<, :> und :^ für linksbündige, rechtsbündige beziehungsweise zentrierte Ausrichtung. Da f-Strings zur Laufzeit ausgewertet werden, sind sie effizient und leicht zu lesen und damit eine ausgezeichnete Wahl für die Spaltenausrichtung.
Spaltenausrichtung mit expandtabs()
Tabulatoren (\t) können die Ausgabe strukturieren, und expandtabs() erlaubt eine explizite Kontrolle der Tabulatorbreite, um Abstände dynamisch anzupassen.
Beispiel:
print(("First Name: Jim" + "\t" + "Last Name: Clark").expandtabs(13))
print(("Age: 42" + "\t" + "Website: DelftStack.com").expandtabs(26))
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
Diese Methode ist nützlich bei tabulatorgetrennten Werten (TSV), aber da die Tabulatorbreite von den Terminaleinstellungen abhängt, liefert expandtabs() nicht immer in allen Umgebungen konsistente Ergebnisse.
Linksbündige Ausrichtung mit ljust()
Python bietet die Methoden ljust(), rjust() und center() zur Textausrichtung. Die Methode ljust() sorgt für linksbündige Ausrichtung innerhalb einer festen Breite. Ein tieferes Verständnis der Techniken zum Auffüllen von Zeichenketten vermittelt unser Leitfaden Zeichenketten in Python mit Leerzeichen auffüllen.
Beispiel:
print("First Name: Jim".ljust(40) + "Last Name: Clark")
print("Age: 42".ljust(40) + "Website: DelftStack.com")
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
Mit ljust(40) wird jede Zeichenkette mit Leerzeichen aufgefüllt, sodass eine gleichmäßige Spaltenbreite entsteht.
Spaltenausrichtung mit tabulate
Das Modul tabulate bietet eine einfache Möglichkeit, strukturierte Daten in ausgerichteten Spalten zu formatieren. Es ist besonders nützlich für tabellarische Daten, die gleichmäßige Abstände erfordern, ohne die Ausrichtung für jede Zeile manuell anpassen zu müssen.
Um tabulate zu verwenden, müssen Sie es zuerst installieren. Sie können das Modul mit pip installieren:
pip install tabulate
Nach der Installation bestimmt tabulate automatisch die passende Spaltenbreite und formatiert die Ausgabe übersichtlich. Mit tablefmt="plain" bleibt die Ausgabe in textbasierten Umgebungen einfach und gut lesbar, ohne unnötige Tabellenrahmen.
Beispiel:
from tabulate import tabulate
data = [["First Name:", "Jim", "Last Name: Clark"],
["Age:", "42", "Website: DelftStack.com"]]
print(tabulate(data, tablefmt="plain"))
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
Spaltenausrichtung mit pandas
Beim Umgang mit großen Datensätzen bietet die Bibliothek pandas eine strukturierte Möglichkeit, tabellarische Daten effizient zu formatieren und auszurichten. Wenn Sie mit strukturierten Daten arbeiten, müssen Sie möglicherweise auch eine Liste in einen Pandas DataFrame umwandeln, um sie effizient zu verarbeiten. Anders als bei der manuellen Formatierung sorgt pandas unabhängig von der Datensatzgröße für eine gleichmäßige Spaltenausrichtung.
Beispiel:
import pandas as pd
# Create a DataFrame with fixed column widths for better alignment
data = {"Column 1": ["First Name:", "Age:"],
"Column 2": ["Jim", "42"],
"Column 3": ["Last Name: Clark", "Website: DelftStack.com"]}
df = pd.DataFrame(data)
# Adjust column width for better alignment
col_width = max(df.map(lambda x: len(str(x))).max()) + 2
df_aligned = df.map(lambda x: str(x).ljust(col_width))
print(df_aligned.to_string(index=False, header=False))
Ausgabe:
First Name: Jim Last Name: Clark
Age: 42 Website: DelftStack.com
Die maximale Spaltenbreite berechnen
col_width = max(df.map(lambda x: len(str(x))).max()) + 2
- Dieser Schritt sorgt für gleichmäßige Abstände über alle Spalten, indem er die Länge der längsten Zeichenkette im Datensatz bestimmt.
- Die Funktion
map()wendetlen(str(x))auf jeden Wert im DataFrame an und stellt sicher, dass die Zeichenkettenlängen korrekt berechnet werden. (map()ist der elementweise Ersatz fürapplymap(), das in pandas 2.1 als veraltet markiert und in pandas 3.0 entfernt wurde.) - Die Funktion
max()ermittelt den größten Wert, und+2fügt zusätzliche Polsterung für die Lesbarkeit hinzu.
Linksbündige Ausrichtung auf jede Zelle anwenden
df_aligned = df.map(lambda x: str(x).ljust(col_width))
- Die Funktion
map()wird erneut verwendet, diesmal wendet sieljust(col_width)auf jeden Wert an. ljust(col_width)sorgt dafür, dass alle Werte innerhalb einer einheitlichen Spaltenbreite linksbündig ausgerichtet sind und eine Fehlausrichtung vermieden wird.
Die Tabelle als reinen Text ausgeben
print(df_aligned.to_string(index=False, header=False))
to_string(index=False, header=False)entfernt Index und Kopfzeilen des DataFrames und erzeugt eine saubere, spaltenausgerichtete Ausgabe.
Fazit
Es gibt mehrere Wege, in Python eine Spaltenausrichtung zu erreichen, und jeder eignet sich für andere Anwendungsfälle. Die folgende Tabelle vergleicht die besprochenen Methoden:
| Methode | Flexibilität | Lesbarkeit | Bester Anwendungsfall |
|---|---|---|---|
%-Formatierung |
Niedrig | Mittel | Einfache Fälle mit festen Breiten |
format() |
Hoch | Hoch | Allgemeine Formatierung |
| f-Strings | Hoch | Sehr hoch | Lesbare und effiziente Formatierung |
expandtabs() |
Mittel | Niedrig | Tabulatorbasierte Ausrichtung |
ljust() |
Mittel | Hoch | Linksbündige Ausrichtung sicherstellen |
tabulate |
Hoch | Sehr hoch | Strukturierte Texttabellen formatieren |
pandas |
Hoch | Hoch | Große Datensätze verarbeiten |
Jede Methode hat ihre eigenen Vorteile:
format()und f-Strings bieten Flexibilität und Lesbarkeit und eignen sich ideal für die allgemeine Textformatierung.expandtabs()kann für die Ausrichtung tabulatorgetrennter Werte nützlich sein, aber die Ausrichtung kann je nach Terminaleinstellungen variieren.ljust()bietet eine einfache Möglichkeit, Text linksbündig auszurichten, wenn die Formatierungsanforderungen gering sind.tabulateeignet sich hervorragend, um strukturierte Tabellen mit minimalem Aufwand zu erzeugen.pandasist die beste Wahl für große Datensätze, bei denen eine strukturierte Ausrichtung ohne manuelle Anpassungen erforderlich ist.
Für einfache Textformatierung sind format() oder f-Strings die besten Optionen. Für strukturierte tabellarische Daten bieten tabulate und pandas eine automatisierte Formatierung, die eine gleichmäßige Ausrichtung sicherstellt. Wenn Sie mit Matrizen arbeiten, lesen Sie Matrizen in Python drucken für weitere Techniken zur strukturierten Ausgabe. Die Wahl der richtigen Methode hängt von der Komplexität der Daten und den Anforderungen an die Ausgabe ab.