So beheben sie: typfehler: erwarteter string oder bytes-objekt
Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:
TypeError : expected string or bytes-like object
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, mit der Funktion re.sub() einige Muster in einem Objekt zu ersetzen, das Objekt, mit dem Sie arbeiten, jedoch nicht vollständig aus Zeichenfolgen besteht.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir haben die folgende Werteliste:
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
Nehmen wir nun an, wir versuchen, jeden Nicht-Buchstaben in der Liste durch eine leere Zeichenfolge zu ersetzen:
import re
#attempt to replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', x)
TypeError : expected string or bytes-like object
Wir erhalten eine Fehlermeldung, da einige Werte in der Liste keine Zeichenfolgen sind.
So beheben Sie den Fehler
Der einfachste Weg, diesen Fehler zu beheben, besteht darin, die Liste in ein String-Objekt umzuwandeln, indem man es in den str() -Operator einschließt:
import re
#replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', str (x))
#display results
print (x)
A B C D E
Beachten Sie, dass wir keine Fehlermeldung erhalten, da wir zuerst str() verwendet haben, um die Liste in ein String-Objekt zu konvertieren.
Das Ergebnis ist die ursprüngliche Liste, wobei jeder Nicht-Buchstabe durch ein Leerzeichen ersetzt wird.
Hinweis : Die vollständige Dokumentation zur Funktion re.sub() finden Sie hier .
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden