每日10行代码68:编写高质量python代码的方法3——了解bytes,str与unicode的区别

这是《ffective Python》的第3个方法,核心内容就是介绍了bytes和str的区别,至于unicode介绍的不是很详细。书中主要内容:

  1. 用辅助函数来处理编码。
def to_str(bytes_or_str):
    if isinstance(bytes_or_str, bytes):
        value = bytes_or_str.decode('utf-8')
    else:
        value = bytes_or_str
    return value    # Instance of str


def to_bytes(bytes_or_str):
    if isinstance(bytes_or_str, str):
        value = bytes_or_str.encode('utf-8')
    else:
        value = bytes_or_str
    return value    # Instance of bytes
  1. python3中,如果通过内置的open函数获取了文件句柄,该句柄默认会采用UTF-8编码模式来操作文件,在使用时要注意。如果要采用二进制模式来操作文件,则需要用‘wb’来打开文件:
with open('random.bin', 'wb') as f:
    f.write(os.urandom(10))

在python2中:

with open('random.bin', 'w') as f:
    f.write(os.urandom(10))

要点:

  1. 在python3中,bytes是一种包含8位值的序列,str是一种包含unicode字符的序列。开发者不能以>或+等操作符来混同操作bytes和str实例。
  2. 在对输入的数据进行操作之前,使用辅助函数来保证字符序列的类型与开发者的期望相符(有的时候,开发者想操作以utf-8格式来编码8位值,有时候,则想操作Unicode字符)。
  3. 从文件中读取二进制数据,或向其中写入二进制数据时,总应该以’rb’或’wb’等二进制模式来开启文件。

总结:看完这章后,还是感觉没有完全看明白,一个是unicode字符方面,另一个是文章没有解决中文中经常会用到非utf-8编码方式的问题,这也是困为作者本身是外国人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值