TypeError behoben: Nicht-leere Formatzeichenfolge an Object.__format__ in Python übergeben
Mit der Methode format() in Python können Sie Variablen ersetzen und Daten formatieren. Diese Methode ist nicht dafür ausgelegt, mit anderen Eingaben als den folgenden umzugehen:
- Zeichenfolge mit der Bezeichnung
s - Dezimalzahl bezeichnet als
d - Float als
fbezeichnet - Zeichen bezeichnet als
c - Oktal als
obezeichnet - Hexadezimal bezeichnet als
x - Binär als
bbezeichnet - Exponential wird als
ebezeichnet
Wenn ein anderer Datentyp auf die Methode zugreift, löst der Interpreter den folgenden Fehler aus:
TypeError: non-empty format string passed to object.__format__
Ursachen und Lösungen für TypeError: Non-Empty Format String Passed to Object.__format__ in Python
Angenommen, wir versuchen, die Methode format() für einen Datentyp aufzurufen, der diese Methode nicht hat, zum Beispiel den Datentyp byte. Der Interpreter löst einen Fehler aus, weil das Objekt vom Typ byte keine format()-Methode hat.
Im folgenden Code haben wir absichtlich die Methode format() mit dem Datentyp byte aufgerufen.
Beispielcode:
# Python 3.x
"{:10}".format(b"delftstack")
Ausgang:
#Python 3.x
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-1909c614b7f5> in <module>()
----> 1 '{:10}'.format(b'delftstack')
TypeError: unsupported format string passed to bytes.__format__
Die Lösung für diesen Fehler besteht darin, den Datentyp explizit von Byte in String umzuwandeln. Wir verwenden das Symbol !s für die Konvertierung.
Beispielcode:
# Python 3.x
s = "{!s:10s}".format(b"delftstack")
print(s)
Ausgang:
#Python 3.x
b'delftstack'
Der TypeError: non-empty format string selected to object.__format__ wird auch ausgelöst, wenn wir versuchen, None zu formatieren.
Beispielcode:
# Python 3.x
"{:.0f}".format(None)
Ausgang:
#Python 3.x
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-89103a1332e2> in <module>()
----> 1 '{:.0f}'.format(None)
TypeError: unsupported format string passed to NoneType.__format__
Die Lösung besteht darin, statt None einen gültigen Datentyp zu übergeben.
Beispielcode:
# Python 3.x
s = "{!s:10s}".format(b"delftstack")
print(s)
Ausgang:
#Python 3.x
b'delftstack'
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedInVerwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung
