zoukankan      html  css  js  c++  java
  • python字符串与字节序列

    python字符串与字节

    python3中字节与字符串

    python3中只有一种数据类型可以保存文本信息,就是str(字符串),是不可变序列,保存的是unicode码位。在python3中,用bytes对象来处理字节字符串。
    bytes和可变的bytearray与str不同,只能用字节作为序列值,即0~256之间的整数表示。

     print(bytes([101,100,99]))
    b'edc'
    list(b'hello')
    [104, 101, 108, 108, 111]
    list(b'he llo')
    [104, 101, 32, 32, 32, 108, 108, 111]#空格的序列值是32

    从python3.0开始,所有没有前缀的字符串都是unicode。字节字符串要加前缀b
    unicode字符串是不可以用字节表示的文本,而将数据保存到文本或者通过网络发送必须是二进制数据,所以必须将字符串对象编码为字节序列
    字符串转字节序列:
    1. str.encode(encoding,errors)方法,encoding为编解码器,默认值为'utf-8'

    'hello'.encode()
     b'hello'
    
    1. bytes(source,encoding,errors)构造函数,创建一个新的字节序列,source为字符串,encoding为编解码器,必须指定encoding,没有默认值

      bytes('hello',encoding='utf-8')
      b'hello'
      bytes('hello','utf-8')
      b'hello'
      将bytes表示的二进制数据转成字符串

    2. bytes.decode(encoding,errors)方法,encoding必须与str.encode里的encoding相同

      b'hello'.decode()
      'hello'

    3. str(source,encoding,error)构造函数与bytes()构造函数相似,source是字节序列,必须指定str函数的参数encoding,它没有默认值

      str(b'hello','utf-8')
      'hello'
      python字符串是不可变的,bytes字节序列也是不可变的,有优点有缺点,优点是由于不变性,字符串可以做字典的键或set的元素,因为一旦初始化字符串的值就不会改变。缺点是当要修改字符串时,都需要创建一个全新的字符串实例。bytearray时bytes可变版本,字节数组可以通过append,pop,insert等方法添加修改删除字节序列

    处理字符串拼接

    1. 使用+=方法

      s="" for sub in subs: s+=sub

    2. 使用join方法

      s="".join(subs)
      字符串的格式化方法str.format或%

  • 相关阅读:
    名言
    八猫图
    springMVC 上传下载文件
    mongdb 模糊查询
    tomcat结合nginx使用小结
    orale存储过程
    java执行效率低,但效率就低吗?
    Spring aop 原始的工作原理的理解
    spring aop一些名词的理解
    Spring控制反转(IOC)和依赖注入(DI),再记不住就去出家!
  • 原文地址:https://www.cnblogs.com/dcotorbool/p/8117031.html
Copyright © 2011-2022 走看看