返回介绍

转换

发布于 2024-01-29 22:24:14 字数 860 浏览 0 评论 0 收藏 0

尽管Python 2.X允许str和unicode类型对象自由地混合(如果该字符串只包含7位的ASCII文本的话),Python 3.0引入了一个更鲜明的区分——str和bytes类型对象不在表达式中自动地混合,并且当传递给函数的时候不会自动地相互转换。期待一个str对象作为参数的函数,通常不能接受一个bytes;反之亦然。

因此,Python 3.0基本上要求遵守一种类型或另一种类型,或者手动执行显式转换:

·str.encode()和bytes(S,encoding)把一个字符串转换为其raw bytes形式,并且在此过程中根据一个str创建一个bytes。

·bytes.decode()和str(B,encoding)把raw bytes转换为其字符串形式,并且在此过程中根据一个bytes创建一个str。

encode和decode方法(以及文件对象,将在下一节介绍)针对你的平台使用一个默认编码,或者一个显式传入的编码名。例如,在Python 3.0中:

这里有两点要注意。首先,平台的默认编码在sys模块中可用,但是,bytes的编码参数不是可选的,即便它在str.encode(和bytes.decode)中亦是如此。

其次,尽管调用str并不像bytes那样要求编码参数,但在str调用中省略它并不意味着它是默认的,相反,不带编码的一个str调用返回bytes对象的打印字符串,而不是其str转换后的形式(这通常不是我们想要的!)假设B和S仍然和前面相同:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文