HOWTO · Python
Entsprechung für tostring() in Python
Erfahren Sie, welche Python-Werkzeuge tostring() ersetzen: str() zur Konvertierung, join() für Zeichenketten, f-strings oder str.format() für Vorlagen und __str__() für eigene Objekte.
Auf dieser Seite
Python besitzt keine Methode namens tostring(); die entsprechende Java-Methode wird toString() geschrieben. Verwenden Sie die integrierte Funktion str(value), wenn Sie die Zeichenkettendarstellung eines einzelnen Werts benötigen. Mit join() verbinden Sie mehrere Zeichenketten, während sich f-strings oder str.format() zum Aufbau einer Nachricht eignen. Diese Operationen erzeugen Anzeigetext und kein universelles Serialisierungsformat.
Einen Wert mit str() konvertieren
str() liefert für Zahlen, Sammlungen und die meisten anderen Python-Objekte eine Zeichenkette. Damit ist die Funktion die direkte Antwort auf die Frage: „Was ist in Python die Entsprechung für tostring()?“. Bei einer Sammlung ist das Ergebnis deren lesbare Darstellung einschließlich Begrenzungszeichen und der Darstellungen ihrer Elemente.
number = 123
values = [1, 2, 3]
print(str(number))
print(str(values))
Ausgabe:
123
[1, 2, 3]
Das Ergebnis beider Aufrufe ist vom Typ str. Wenn Sie ein Dictionary oder eine Liste so konvertieren, entsteht dadurch weder JSON noch CSV oder ein anderes Austauschformat. Verwenden Sie eine formatspezifische Bibliothek, wenn ein anderes Programm die Daten zuverlässig lesen muss.
Zeichenketten und gemischte Werte verbinden
Rufen Sie join() auf dem Trennzeichen und nicht auf der Liste auf. Jedes an join() übergebene Element muss bereits eine Zeichenkette sein. Diese wichtige Grenze unterscheidet das Verbinden von der allgemeinen Konvertierung.
words = ["Hello", "world", "from", "Python"]
sentence = " ".join(words)
mixed = "|".join(map(str, [1, "two", None]))
print(sentence)
print(mixed)
Ausgabe:
Hello world from Python
1|two|None
Bei einem Iterable mit Zahlen oder anderen Objekten konvertiert map(str, values) jedes Element vor dem Verbinden. Ein direkter Aufruf wie ", ".join(["one", 2]) löst einen TypeError aus, weil join() Elemente, die keine Zeichenketten sind, nicht implizit konvertiert.
Werte mit f-strings formatieren
Verwenden Sie einen f-string, wenn eine Nachricht Werte enthält und die Vorlage an der Stelle bekannt ist, an der Sie den Code schreiben. Ausdrücke in geschweiften Klammern werden ausgewertet und während der Formatierung konvertiert. Formatspezifikationen können Genauigkeit, Breite und weitere Darstellungsdetails steuern.
name = "Ada"
score = 3.14159
message = f"{name} scored {score:.2f}"
print(message)
Ausgabe:
Ada scored 3.14
F-strings wurden mit Python 3.6 eingeführt und sind auch in der aktuellen Python-3.14-Reihe verfügbar. Für eine lokale, gut lesbare Vorlage sind sie meist die klarste Wahl, sollten aber nicht zur Serialisierung von Daten für ein anderes System verwendet werden.
str.format() für Vorlagen verwenden
str.format() eignet sich, wenn eine Vorlage getrennt gespeichert, wiederverwendet oder von Code unterstützt werden muss, der älter als f-strings ist. Die Methode konvertiert die übergebenen Werte, während sie nummerierte oder benannte Felder ersetzt.
item = "apple"
quantity = 5
message = "I have {quantity} {item}s.".format(quantity=quantity, item=item)
print(message)
Ausgabe:
I have 5 apples.
Bevorzugen Sie bei Vorlagen mit mehreren Werten benannte Felder. Dadurch ist die Beziehung zwischen jedem Platzhalter und seinem Wert leichter zu erkennen. Für neuen Code mit einer direkt eingebetteten Vorlage ist ein f-string in der Regel kürzer.
__str__() für eigene Objekte definieren
Implementieren Sie __str__(), wenn Ihre Klasse eine nützliche, menschenlesbare Darstellung benötigt. Python ruft die Methode für str(instance) und beim Anzeigen der Instanz mit print() auf. Sie muss eine Zeichenkette und darf keine Zahl oder ein anderes Objekt zurückgeben.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} ({self.age})"
person = Person("Ada", 36)
print(str(person))
Ausgabe:
Ada (36)
Halten Sie __str__() knapp und für Menschen hilfreich. __repr__() dient einem anderen Zweck, nämlich der Fehlersuche und der Darstellung für Entwickler; die Definition der einen Methode ersetzt die andere nicht.
Einschränkungen und Zusammenfassung der Methoden
Wählen Sie die Operation passend zum gewünschten Ergebnis:
- Verwenden Sie
str(value)für einen einzelnen Wert oder die lesbare Darstellung einer Sammlung. - Verwenden Sie
separator.join(strings), um Zeichenketten zu verbinden, und konvertieren Sie die Elemente bei Bedarf vorher mitmap(str, values). - Verwenden Sie f-strings für lesbare, direkt eingebettete Vorlagen und
str.format()für wiederverwendbare oder getrennt gespeicherte Vorlagen. - Implementieren Sie
__str__(), wenn Ihre eigene Klasse eine menschenlesbare Darstellung benötigt.
Diese Methoden garantieren keine umkehrbare oder maschinenlesbare Darstellung. Verwenden Sie für JSON json.dumps() und behandeln Sie Typen, die JSON nicht darstellen kann. Definieren Sie für ein eigenes Übertragungsformat ein ausdrückliches Schema, anstatt sich auf die Ausgabe von str() zu verlassen.
Kurz gesagt: Ersetzen Sie einen Java-ähnlichen Aufruf von tostring() durch str(value) und wählen Sie anschließend join(), einen f-string, str.format() oder __str__(), wenn es konkret um das Verbinden, Formatieren oder Anpassen von Text geht.