资讯专栏INFORMATION COLUMN

Python3 上 bytes 和 str

NotFound / 3197人阅读

摘要:最近学,在上上这门课,就顺藤摸瓜地读了这本书。中有和两种类型,而已经严格区分了和两种数据类型,为原来的,代替了之前的。而使用类型,实质上是告诉,不需要它帮你自动地完成编码和解码的工作,而是用户自己手动进行,并指定编码格式。

最近学 Python,在 coursera 上上 Programming for Everybody (Getting Started with Python) 这门课,就顺藤摸瓜地读了 python for informatics 这本书。书上用的 Python2 ,电脑装的3,有些地方不一样。例如 str 的 translate 方法在删除特定字符时死活不对。

调出help查了一下。

>>> help(str.translate)
Help on method_descriptor:

translate(...)
    S.translate(table) -> str
    
    Return a copy of the string S in which each character has been mapped
    through the given translation table. The table must implement
    lookup/indexing via __getitem__, for instance a dictionary or list,
    mapping Unicode ordinals to Unicode ordinals, strings, or None. If
    this operation raises LookupError, the character is left untouched.
    Characters mapped to None are deleted.

没有 deletechars 参数,难怪会有报错
TypeError - Translate takes one argument.(2 given)
而另一个数据类型bytes是有的。

>>> help(bytes.translate)
Help on method_descriptor:

translate(...)
    translate(table, [deletechars])
    Return a copy with each character mapped by the given translation table.
    
      table
        Translation table, which must be a bytes object of length 256.
    
    All characters occurring in the optional argument deletechars are removed.
    The remaining characters are mapped through the given translation table.

Python2 中有 str 和 Unicode 两种类型,而 Python3已经严格区分了 bytes 和 str 两种数据类型,str为原来的unicode,bytes代替了之前的str。

在将字符串存入磁盘和从磁盘读取字符串的过程中,Python 自动地帮你完成了编码和解码的工作,你不需要关心它的过程,例如你能把一个中文赋值给字符串。而使用 bytes 类型,实质上是告诉 Python,不需要它帮你自动地完成编码和解码的工作,而是用户自己手动进行,并指定编码格式。

现在你不能在需要 bytes 类型参数的时候使用 str 参数,反之亦然。str.translate(...)就不适合使用deletechar,因为一个Unicode字符经过编码后可能会和一些英文ACSII码混淆,而bytes中对单个字节操作不会有这种问题。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44216.html

相关文章

  • 聊聊Python 3 的字符串:str bytes 的区别

    摘要:的字符串有两种和,的字符串也有两种和。不同字符的不同表现,让的和显得扑朔迷离。在中,严格区分了和,不同类型之间操作就会抛出的异常。和之间的转换一图胜千言和的相互转换指的是具体的编码规则的名称,对于中文来说,它可以是这些值等等。 Python2的字符串有两种:str 和 unicode,Python3的字符串也有两种:str 和 bytes。Python2 的 str 相当于 Pytho...

    AWang 评论0 收藏0
  • unicodeutf8 —— 从一个遍历文件名的脚本,谈谈对Python2Python3中字符编

    摘要:如果传一个中文,下和下编码分别是和,可以自己用打印看看文件中写死,本来理解是跟这个文件本身编码有关,但文件编码同样是的情况下,下打印了的超集,下仍然是。 对编码问题一直一知半解,之前也是得过且过,正好有个同事要我帮忙写个脚本,涉及这方面的问题,借这个契机研究了一下. 先贴几篇比较好的: 1.阮老师的上古文章(07年…),虽然古老但对理解帮助很大,从最基础讲起,逻辑清晰易理解. (ps:...

    宠来也 评论0 收藏0
  • 详解python2python3的区别

    摘要:认为有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。的和方法返回迭代器,而之前的等函数都被废弃。python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。   1.性能  Py3.0运...

    Sourcelink 评论0 收藏0
  • 详解python2python3的区别

    摘要:认为有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。的和方法返回迭代器,而之前的等函数都被废弃。python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。   1.性能  Py3.0运...

    Martin91 评论0 收藏0
  • python3.5简单爬虫实例---检测路由器流量并写入txt

    摘要:写在前面本人的所有文章只适合善于使用百度的人,因为所有基础知识个个博客复制粘贴了无数遍,我这里均不会详细讲述。 写在前面 本人的所有文章只适合善于使用百度的人,因为所有基础知识个个博客复制粘贴了无数遍,我这里均不会详细讲述。 在这里我表示所有不经验证的转载都是耍流氓,把一篇篇错误的文章转载的到处都是,不知道浪费了多少人的时间精力去反复调试错误的代码,尤其是对初学者有极大的打击性。 大家...

    FleyX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<