在 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中文网其他相关文章!