python3.x的字符串

版权声明:本文为博主原创文章,未经博主允许可以转载。 https://blog.csdn.net/killeri/article/details/82692240

首先了解一下字符集:
*最初的ASCII标准在美国创建,只包含了0~127个字符的字符代码,后来的Latin-1字符集,充分利用了8位的空间,添加了一些特殊字符,此时就有了128~255这些特殊字符代码,上面两个字符集中每个字符只占据了一个字节(八位),但是像在亚洲等其他地区的字符一个字节可表示不了一个字符,所以出现了称为“宽字符”的概念,如Unicode字符集,它可为一个字符表示一个字节也可以是多个字节,如编码方式UTF-8采用的就是可变字节的方式。
包含关系是:ascii是latin-1的子集,latin-1又是Unicode的子集,其中Unicode包含多种编码方式,如UTF-8等。*

一、在python3.x中字符串对象有三类:str, bytes, bytearray
其中str表示Unicode文本(8位或更宽的),bytes表示不可变的二进制数据, bytearray表示可变的二进制数据

二、str对象很简单,除了二进制数据,其它的字符串都是str类型。而bytes和bytearray则表示图片,视频或音频的二进制数据,他们实际上都是一个小整数的集合,两个最大的区别在于后者可在原地修改!

三、原则上三个字符串类型转换函数:str(s,encoding), bytes(s, encoding), bytearray(s, encoding)中的参数,除了要转换的文本外,还要有对应的编码方式,除了可以用函数进行相互转换外,还有字符串方法encode和decode方法可以进行两个类型的转换,两个方法都接受一个编码方式作为参数。

四、三种字符串类型都有普通字符串的几乎所有操作,如序列操作,字符串方法etc,但是bytes对象和bytearray对象没有字符串格式化操作,要特别注意。对bytes字符串进行索引时返回的是一个int,表示他的字符代码

五、三种类型的对象中str和bytes(bytearray)不可以混合使用

总结一下:

  • 对文本数据使用str
  • 对二进制数据使用bytes
  • 对需要原地修改的二进制数据使用bytearray

猜你喜欢

转载自blog.csdn.net/killeri/article/details/82692240