在Python 3 中將字串轉換為字節
不可避免的“TypeError: 'str' 不支援緩衝區接口”錯誤經常出現在以下情況:嘗試將字串轉換為位元組。為了解決這個問題,建議使用兩種主要方法:
b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')
哪一種方法被認為比較Pythonic?
位元組和位元組數組
查閱位元組的 Python 文件。請注意,它會將您引導至 bytearray,它的用途比僅編碼字串更廣泛。
bytearray([source[, encoding[, errors]]])
Bytearray 初始化來自各種來源的可變整數序列,包括字串:
Pythonic 注意事項
要對字串進行編碼,some_string.encode(encoding) 被認為更 Pythonic。使用encode()方法清楚地表達了使用特定編碼將輸入字串轉換為位元組的意圖。 bytes() 建構函式雖然適合更全面的操作,但在這種情況下不太明確。
此外,unicode_string.encode(encoding) 鏡像了 byte_string.decode(encoding) 將位元組轉換回字串的對稱性,增強程式碼可讀性和一致性。
內部實作
CPython 的實作使用 PyUnicode_AsEncodedString 將 Unicode 字串轉換為位元組,這本質上是在內部呼叫encode() 方法。因此,直接呼叫encode()可以節省額外的步驟。
以上是Python 字串到位元組:`bytes()` 與 `encode()` — 哪個比較 Pythonic?的詳細內容。更多資訊請關注PHP中文網其他相關文章!