HOWTO · Python
Konvertieren Tupel in einen String in Python
Dieses Tutorial zeigt, wie Sie Tupel in Python in einen String konvertieren
Auf dieser Seite
Das Konvertieren eines Tupels in einen String ist in Python eine häufige Aufgabe — sei es, um Ausgaben für das Logging vorzubereiten, Daten für die Anzeige zu formatieren oder Werte in eine Datei zu schreiben. Tupel sind unveränderliche Sequenzen, die Elemente unterschiedlicher Typen enthalten können, und Python bietet mehrere Möglichkeiten, ein Tupel in einen String zu verwandeln. Welche Variante die richtige ist, hängt davon ab, welches Ergebnis Sie genau benötigen.
Wählen Sie die String-Form, die zu Ihrem Ziel passt
„Ein Tupel in einen String konvertieren“ kann zwei verschiedene Dinge bedeuten. Der Aufruf von str() auf einem Tupel liefert dessen String-Repräsentation — denselben Text, den Sie in einer REPL sehen würden, einschließlich Klammern, Kommas und Anführungszeichen um String-Elemente. Diese Form ist für das Debugging oder Logging nützlich, aber selten das, was Sie einem Benutzer zeigen möchten.
Das andere Ergebnis ist ein String, der aus den Elementen des Tupels aufgebaut wird. Die Methode join() verkettet sie mit einem Trennzeichen Ihrer Wahl, eine Schleife gibt Ihnen Kontrolle über die Formatierung jedes einzelnen Elements, und reduce() faltet die Elemente zu einem einzigen Wert. Verwenden Sie str(), wenn Sie die literale Form des Tupels wünschen, und einen der elementweise kombinierenden Ansätze, wenn Sie eine saubere, lesbare Ausgabe benötigen.
Das gesamte Tupel mit str() konvertieren
Die eingebaute Funktion str() nimmt ein beliebiges Objekt entgegen und gibt dessen String-Repräsentation zurück. Auf ein Tupel angewendet, konvertiert sie den gesamten Container auf einmal und behält dessen Syntax bei — die Klammern und die Anführungszeichen um String-Elemente werden Teil des Ergebnisses.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
my_tuple = (1, 2, 3, 'Hello', 'World')
tuple_as_string = str(my_tuple)
print(tuple_as_string)
Ausgabe:
(1, 2, 3, 'Hello', 'World')
Beachten Sie die Anführungszeichen um 'Hello' und 'World': Das Ergebnis ist ein Abbild des Tupels, keine saubere Liste seines Inhalts. Speichern Sie es unter einem aussagekräftigen Namen wie tuple_as_string — weisen Sie es niemals str zu, da dies die eingebaute Funktion für den Rest Ihres Programms überschatten würde.
Tupel-Elemente mit einem Trennzeichen verbinden
Die Methode join() verkettet eine Sequenz von Strings zu einem einzigen String. Sie rufen sie auf dem Trennzeichen-String auf und übergeben das Tupel als Argument — das macht sie zur idiomatischen Wahl, wenn jedes Element bereits ein String ist.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
my_tuple = ('Python', 'is', 'awesome')
tuple_as_string = ' '.join(my_tuple)
print(tuple_as_string)
Ausgabe:
Python is awesome
Das Trennzeichen kann beliebig sein. Ein Trennzeichen ohne Zeichen fügt die Elemente direkt aneinander, und Kommas, Bindestriche oder längere Strings sind ebenfalls gültig:
letters = ('P', 'y', 't', 'h', 'o', 'n')
print(''.join(letters))
print(', '.join(letters))
Ausgabe:
Python
P, y, t, h, o, n
Eine Einschränkung ist wichtig: join() akzeptiert nur Strings. Übergeben Sie ein Tupel mit Zahlen oder anderen Objekten, erhalten Sie einen TypeError — konvertieren Sie diese Elemente daher zuerst, wie der nächste Abschnitt zeigt.
Tupel mit gemischten Typen vor dem Verbinden konvertieren
Reale Daten mischen häufig Typen, daher sollten Sie jedes Element vor dem Verbinden durch str() schicken. Ein Generator-Ausdruck innerhalb von join() erledigt dies in einer lesbaren Zeile:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
my_tuple = (1, 2, 3, 'Hello', 'World')
tuple_as_string = ' '.join(str(item) for item in my_tuple)
print(tuple_as_string)
Ausgabe:
1 2 3 Hello World
Jedes Element wird mit derselben Funktion str() wie zuvor konvertiert, sodass Ganzzahlen, Gleitkommazahlen und andere Objekte problemlos verbunden werden. Eine List-Comprehension wie [str(item) for item in my_tuple] funktioniert identisch; die Generator-Form vermeidet lediglich den Aufbau einer Zwischenliste. Dieser Konvertierungsschritt ist die Lösung für den oben beschriebenen TypeError — join() sieht niemals einen Nicht-String-Wert.
Einen String mit einer Schleife aufbauen
Eine Schleife erfordert mehr Code, gibt Ihnen aber Kontrolle über jedes Detail: Sie konvertieren jedes Element selbst, entscheiden genau, wo Trennzeichen stehen, und können Elemente unterwegs überspringen oder umformen. Wird das Trennzeichen vor jedes Element nach dem ersten gesetzt, bleibt kein überflüssiges Zeichen am Ende:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
my_tuple = ('Python', 3.9, 'is', 'great')
tuple_as_string = ''
for index, item in enumerate(my_tuple):
if index:
tuple_as_string += ' '
tuple_as_string += str(item)
print(tuple_as_string)
Ausgabe:
Python 3.9 is great
enumerate() liefert die Position jedes Elements, sodass das Leerzeichen nur zwischen den Elementen eingefügt wird. Dieses Muster eignet sich für Tupel, deren Elemente eine individuelle Behandlung benötigen — etwa das Runden von Zahlen, das Setzen bestimmter Werte in Anführungszeichen oder das Filtern — wo ein einfaches join() die Logik nicht ausdrücken kann.
reduce() als Alternative verwenden
functools.reduce() faltet eine Sequenz zu einem einzigen Wert, indem es eine Funktion mit zwei Argumenten kumulativ anwendet. Mit operator.add verkettet es die Elemente paarweise nacheinander. Das Beispiel benötigt zwei Importe:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
import functools
import operator
letters = ('t', 'u', 'p', 'l', 'e')
word = functools.reduce(operator.add, letters)
print(word)
Ausgabe:
tuple
Der Ansatz mit reduce() fügt von sich aus keine Trennzeichen ein; sie hinzuzufügen erfordert ein Lambda oder eine vorbereitete Hilfsfunktion, was schnell schwerer lesbar wird als join(). Behalten Sie ihn als Alternative im Hinterkopf — doch um ein Tupel in einen String zu verwandeln, ist join() — mit einem Generator-Ausdruck für gemischte Typen — fast immer das klarere Werkzeug.