TypeError behoben: Nicht-leere Formatzeichenfolge an Object.__format__ in Python übergeben

Fariba Laiq 21 Juni 2023
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'
Fariba Laiq avatar Fariba Laiq avatar

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.

LinkedIn

Verwandter Artikel - Python Error