美文网首页
Python基础-str、bytes、unicode区别介绍

Python基础-str、bytes、unicode区别介绍

作者: 言淦 | 来源:发表于2018-10-21 17:14 被阅读0次

环境: Centos7 + Python3.5.4

1.在Python中也存在字节型数据(bytes)和字符型数据(unicode),不过这两者在Python2和Python3中却有点不同。
Py2 和 Py3 都用 str 类型来表示字符串,不过在Py2中,str跟bytes是等价的;在Py3中,str跟unicode是等价的。另外,值得注意的是,在Py2中,bytes跟unicode是等价的;在Py3中则是不等的。详情见下图或者在Python命令行尝试。

Python2


image

Python3


image

2.字节型转换为字符型可以理解为解码(decode),反之则是编码(encode)。下面只展示Python3的情况
首先,我们可以通过 locale 来查看本机的默认编码方式,貌似Linux默认是utf-8,windows默认是gbk。

>>>import locale
>>>locale.getpreferredencoding(False)

其次,我们将尝试 字符->字节

>>>a = '学习'
>>>ae = a.encode('utf-8')
b'\xe5\xad\xa6\xe4\xb9\xa0'

字节->字符

>>> ae.decode('utf-8')
'学习'

最后,因为在Py3中,字符串与unicode是等价的,所以字符串是没有decode方法的,如果调用该方法则会报错

>>> a.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'

相关文章

网友评论

      本文标题:Python基础-str、bytes、unicode区别介绍

      本文链接:https://www.haomeiwen.com/subject/pviqzftx.html