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或%

posted @ 2017-12-26 11:11  Doctor_Bool  阅读(3514)  评论(0编辑  收藏  举报