Wie kann ich in Python einen beliebigen Datentyp in eine Zeichenfolge ändern?
Wie kann ich in Python einen beliebigen Datentyp in eine Zeichenfolge ändern?
Antworten:
myvariable = 4
mystring = str(myvariable) # '4'
Alternativ können Sie auch repr:
mystring = repr(myvariable) # '4'
Dies wird in Python als "Konvertierung" bezeichnet und ist weit verbreitet.
str(u'ä')wird nicht funktionieren. Allerdings repr(u'ä')funktioniert.
strsoll eine Zeichenfolgendarstellung der Objektdaten erzeugen. Wenn Sie Ihre eigene Klasse schreiben und für Sie arbeiten möchten str, fügen Sie hinzu:
def __str__(self):
return "Some descriptive string"
print str(myObj)wird anrufen myObj.__str__().
reprist eine ähnliche Methode, die im Allgemeinen Informationen zu den Klasseninformationen erzeugt. reprErzeugt für die meisten Kernbibliotheksobjekte den Klassennamen (und manchmal einige Klasseninformationen) in spitzen Klammern. reprwird zum Beispiel verwendet, indem Sie Ihr Objekt einfach in Ihren Interaktionsbereich eingeben, ohne es zu verwenden printoder etwas anderes.
Sie können das Verhalten von reprfür Ihre eigenen Objekte genauso definieren wie das Verhalten von str:
def __repr__(self):
return "Some descriptive string"
>>> myObjin Ihrem Interaktionsbereich oder repr(myObj)wird dazu führenmyObj.__repr__()
object.__repr__Kernbibliotheksobjekte nach rohem Prozentsatz die Darstellung in spitzen Klammern zurückgibt, viele der am häufigsten verwendeten jedoch nicht. Als Faustregel für die reprist , dass , wenn es Sinn macht Python - Code zurückzugeben , die das gleiche Objekt ausgewertet werden konnten zu produzieren, das tun, wie gerade str, frozensetund die meisten anderen builtins tun, aber wenn dies nicht der Fall, verwenden Sie die Winkelhalterung Formular, um sicherzustellen, dass das, was Sie zurückgeben, möglicherweise nicht mit einem von Menschen lesbaren und als Quelle auswertbaren Repräsentanten verwechselt werden kann.
list, die sich selbst enthält, gibt etwas zurück, das nicht nur aussieht, sondern auch auswertbarer Code ist, der als falsch ausgewertet wird -, aber die Kernentwickler haben dies nie als Lizenz zur Erweiterung derselben angesehen Verhalten in die stdlib.)
Ich sehe alle Antworten empfehlen zu verwenden str(object). Es kann fehlschlagen, wenn Ihr Objekt mehr als ASCII-Zeichen enthält und Sie Fehler wie sehen ordinal not in range(128). Dies war bei mir der Fall, als ich die Liste der Zeichenfolgen in eine andere Sprache als Englisch konvertierte
Ich habe es mit gelöst unicode(object)
str(object) wird den Trick machen.
Wenn Sie die Art und Weise ändern möchten, wie das Objekt stringifiziert wird, definieren Sie die __str__(self)Methode für die Objektklasse. Eine solche Methode muss str oder Unicode-Objekt zurückgeben.
str(any_var)oderany_var.__str__()
timeitModul zu überprüfen ), sollten Sie es verwenden, str(any_var)da es für den Menschen besser lesbar ist und es ermöglicht, von Fällen zu profitieren, wenn es any_vardefiniert ist, __repr__()aber nicht. t definieren __str__().
Verwenden Sie das streingebaute:
x = str(something)
Beispiele:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
Aus der Dokumentation:
Gibt eine Zeichenfolge zurück, die eine gut druckbare Darstellung eines Objekts enthält. Bei Zeichenfolgen wird die Zeichenfolge selbst zurückgegeben. Der Unterschied zu repr (Objekt) besteht darin, dass str (Objekt) nicht immer versucht, eine Zeichenfolge zurückzugeben, die für eval () akzeptabel ist. Ziel ist es, eine druckbare Zeichenfolge zurückzugeben. Wenn kein Argument angegeben wird, wird die leere Zeichenfolge '' zurückgegeben.
Mit str(x). Jeder Datentyp kann jedoch eine eigene Zeichenfolgenkonvertierung definieren, sodass dies möglicherweise nicht das ist, was Sie möchten.
Verwenden Sie einfach str- zum Beispiel:
>>> str([])
'[]'
Seien Sie vorsichtig, wenn Sie den Datentyp wirklich "ändern" möchten. Wie in anderen Fällen (z. B. Ändern des Iterators in einer forSchleife) kann dies zu unerwartetem Verhalten führen:
>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
str(var)? ist es das, wonach du suchst?