Konvertieren von Strings in Bytes in Python 3
Der unvermeidbare Fehler „TypeError: 'str' unterstützt die Pufferschnittstelle nicht“ tritt häufig auf, wenn Ich versuche, eine Zeichenfolge in Bytes umzuwandeln. Um dieses Problem anzugehen, werden zwei Hauptmethoden vorgeschlagen:
b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')
Welche Methode gilt als pythonischer?
Bytes und Bytearrays
Konsultieren Sie die Python-Dokumentation für Bytes. Beachten Sie, dass Sie dadurch zu bytearray weitergeleitet werden, das einem umfassenderen Zweck dient als nur der Kodierung von Zeichenfolgen.
bytearray([source[, encoding[, errors]]])
Bytearray initialisiert eine veränderbare Folge von Ganzzahlen aus verschiedenen Quellen, einschließlich Zeichenfolgen:
Pythonische Überlegungen
Um einen String zu kodieren, gilt some_string.encode(encoding) als eher pythonisch. Die Verwendung der Methode encode() drückt eindeutig die Absicht aus, die Eingabezeichenfolge mithilfe einer bestimmten Codierung in Bytes umzuwandeln. Der bytes()-Konstruktor eignet sich zwar für umfassendere Operationen, ist in diesem Szenario jedoch weniger explizit.
Darüber hinaus spiegelt unicode_string.encode(encoding) die Symmetrie von byte_string.decode(encoding) für die Rückkonvertierung von Bytes in Strings wider , wodurch die Lesbarkeit und Konsistenz des Codes verbessert wird.
Intern Implementierung
Die Implementierung von CPython konvertiert Unicode-Zeichenfolgen mithilfe von PyUnicode_AsEncodedString in Bytes, was im Wesentlichen die Methode encode() intern aufruft. Daher erspart Ihnen der direkte Aufruf von encode() einen zusätzlichen Schritt.
Das obige ist der detaillierte Inhalt vonPython-String in Bytes: „bytes()' vs. „encode()' – Was ist pythonischer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!