A.基本概念
1.字节串性质
>常量(不)可变对象
>有序对象
2.字节串元素
>字节串bytes、字节数组bytearray是二进制数据组成的序列,其中每个
元素由8bit二进制(同1byte,同2位16进制数,同0~255)组成。
·字节串的具体元素是将该字符串编码为字节串的规则所决定的
* ascii :元素为一个十进制整数
* gb2312 :元素为十六进制整数
* utf-8 :元素为一个十进制整数或十六进制整数
3.字节串存储
>以字节存储(byte),当显示时以字节形式的十进制或十六进制显示
4.字节分可变字符串和不可变字符串
B.字节串的定义
1.由字符串派生成(不可变字节串)
>b-string 适用字符串都是ASCII字符
>string.encode(编码方式) 适用任意字符串
2.由bytes()的返回值生成(不可变字节串)
3.由bytearray()的返回值生成(可变字节串/字节数组)
C.字节串的方法
1.访问
>索引(见序列)
2.切割
>按符切割
功能:将字节串bytes按分割符分开为几个子字节串,x为切割次数,默
认全切。返回一个分割后的子串组成的列表
函数:bytes.split(分割符[,x]) 左切割
函数:bytes.rsplit(分割符[,x]) 右切割
>按行切割
函数:splitlines([keepends])
功能:将字节节串bytes按行(b\r--b\r\n--b\n)分隔返回一个由各行
组成列表.参数Keepends为False,不含换行符(默认),为 True,
保留换行符
3.拼接
>字节串直接拼接
语法:使用+直接拼接字节串
>去除特殊字符
函数:bytes.strip()、rstrip()、lstrip()
功能:删除字节串前后/前/后的特殊字符。
说明:特殊字节指制表符(b\t)、回车符(b\r)、换行符(b\n)空格
4.替换
>按串替换
函数:bytes.replace(字节串1,字节串2 [,整型数x])
功能:其中字节串1为bytes字节串的子串,将bytes字节串的字节串
1替换为字节串2(x为将串1换为串2的个数 默认是全换),并
返回结果,bytes字节串本身不变。
>按字符列表替换
函数:bytes.maketrans(bytes1,bytes2)+bytes.translate(table)
功能:maketrans填入两等长字节串,用bytes1(键)和bytes2(键值)每
一对字节的数值构成字典映射并返回,translate利用maketrans
返回值得到字节替换表table替换字节串中相关字节并返回一个
字节串副本
5.填充
>两边填充
函数:bytes.center(width[byte])
功能:返回使用byte填充bytes至长width的新字节串
参数:width--返回字节串的总长度
byte -- 填充字节
注意:使用center方法的字节串不能直接加入换行回车,会影响格式,
应把换行回车加在center的返回值上
>左/右填充
函数:bytes.r/ljust(width[byte])
功能:返回长度width的右/左对齐字节串,不够时补byte(默认b空格)
6.解码
>将bytes/bytearray解码为str
函数:bytes[array].decode([decoding="utf-8"][errors="strict"])
参数
·Encoding指定解码方式
·errors指定错误处理方式
* strict:遇到非法字符就抛出异常。
* ignore:忽略非法字符。
* replace:用“?”替换非法字符。
* xmlcharrefreplace:使用 xml 的字符引用。
说明:纯英文bytes/bytearray可以‘ascii’解码为str
含中文bytes/byte可以用’utf-8’/’gb2312’/gbk解码为str
7.判断(返回布尔值)
>bytes.isascii 判断bytes是否全为ASCII中的字符(0-127)
>bytes.isalnum() 判断bytes是否全为a-zA-Z0-9中的字符
>bytes.isalpha() 判断bytes是否全为字母
>bytes.isspace() 判断bytes是否全为空格
>bytes.islower/isuper() 判断bytes整体是否全小/大写
>bytes.istitle() 判断str是否符合首字母大写其它小写的规则
>bytes.startswith/endswith(sub[,start[,end]])
参数: bytes->母串 sub->要匹配/索引的子串
start->从此索引开始操作(默认为0)
end->到此索引结束操作(默认为-1,即结尾)
功能:bytes是否以sub开头/结尾,返回布尔值
>a (not)in bytes 判断对象a是否为bytes中的一个子串
8.查找
>count、find、index的参数
bytes->母串 sub->要匹配/索引的子串
start->从此索引开始操作(默认为0)
end->到此索引结束操作(默认为-1,即结尾)
>统计子串个数
函数:bytes.count(sub[start,end])
功能:返回sub在bytes中出现次数,若不存在,返回 0
>寻找子串
函数:bytes.find(sub[start,end]) bytes.r/index(sub[start,end])
功能:sub在bytes中是否出现,若出现返回第一次出现的索引,若不出
现,返回 -1
注意
·index和find完全相同不过当无索引时会抛出异常
·加了r表示从右边开始扫描
举报/反馈