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
f
bezeichnet - Zeichen bezeichnet als
c
- Oktal als
o
bezeichnet - Hexadezimal bezeichnet als
x
- Binär als
b
bezeichnet - Exponential wird als
e
bezeichnet
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