美文网首页
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