python之bytes 作者:马育民 • 2018-12-12 16:48 • 阅读:10777 需要掌握[字节(byte)](http://www.malaoshi.top/show_1EF2R6PoDA0P.html "字节(byte)") 需要掌握[python字符串](http://www.malaoshi.top/show_1EF1PjrKp8X7.html "python字符串") 需要掌握[ASCII、GBK、Unicode、UTF-8编码](http://www.malaoshi.top/show_1EF2PfTMBHiG.html "ASCII、GBK、Unicode、UTF-8编码") # 概述 bytes由字节组成的序列,是 **不可变对象** bytes常用方法类似str >功能相当于C语言的字节数组 ### 定义bytes数据 Python对bytes类型的数据用带 **b前缀** 的 **单引号** 或 **双引号** 表示: ```python b=b'' #创建一个空的bytes b=bytes() #创建一个空的bytes b=b'Hello world' #直接指定字符串是bytes类型 ``` **注意** 引号里面的内容只能是 **ASCII码**,不能出现 **汉字**,否则报错。见下面代码 ``` b=b'哈喽' ``` 报错如下: ``` SyntaxError: bytes can only contain ASCII literal characters. ``` 当使用ASCII码以外的字符时,需要做转换处理 ### 1、count ``` #计算子字符串(字符串表示的二进制数据)在规定范围内出现的次数 bytes.count(sub[, start[, end]]) bytearray.count(sub[, start[, end]]) ``` ### 2、decode ``` #返回指定编码的字符串表示二进制数据 bytes.decode(encoding="utf-8", errors="strict") bytearray.decode(encoding="utf-8", errors="strict") ``` ### 3、endswith ``` #判断给定的(字符串表示二进制数)是否在指定范围内的结尾(是否是指定范围内的后缀) bytes.endswith(suffix[,start[,end]]) bytearray.endswith(suffix[,start[,end]]) ``` ### 4、find ``` #判断子指定范围的字符串(字符串表示二进制数据)是否存在字符串(字符串表示二进制数据)中 bytes.find(sub[,start[,end]] bytearray.find(sub[,start[,end]] ``` ### 5、index ``` #查找子字符串(字符串表示的二进制数据)在指定范围内的索引位置 bytes.index(sub[,start[,end]]) bytearray.index(sub[,start[,end]]) ``` ### 6、join ``` #以字节数组为分隔符,来显示迭代器中的内容 bytes.join(iterable) batearray.join(iterable) ``` ### 7、maketrans ``` #是一个静态方法 #将(to)指定的二进制数据字符,映射到表中相同位置,相同长度的(from)位置上 static bytes.maketrans(from, to) static bytearray.maketrans(from, to) ``` ### 8、partition ``` #用来对字节数组进行分区,分成三部分,参数作为分隔符, #如果参数部分包含于当前字节数组的子字符串, #参数分隔符将字节数组切割成三部分, #那么参数部分作为第二部分,第一部分为参数分隔符在当前字节数组中左边一部分,第三部分为分隔符右边一部分; #如果分隔符为当前字节数组的结尾,则第三部分为空字节数组; #如果参数不存在于当前字节数组中,则第一部分直接打印当前字节数组,第二,三部分为空字节数组。 bytes.partition(sep) bytearray.partition(sep) ``` ### 9、replace ``` #旧的字符串表示的二进制数据被新的字符串表示二十制数据取代,如果选项参数count被计数,则仅仅返回第一次计数 bytes.replace(old, new[,count] bytearray.replace(old, new[,count] ``` ### 10、rfind ``` #返回子序列在指定范围内的最高索引值,如果不在当前字节数组序列中,返回-1 bytes.rfind(sub[,start[,end]]) bytearray.rfind(sub[,start[,end]]) ``` ### 11、rindex ``` #同rfind,如果不存在于当前字节数组序列中,返回语法错误 bytes.rindex(sub[,start[,end]]) bytearray.rindex(sub[,start[,end]]) ``` ### 12、rpartition ``` #同partition,不处之处在于如果分隔符参数不包含于字节数组序列中,左边一,二部分为空数组 #如果分隔符参数在字节数组序列中的结尾,则第一分区为空数组, #意思是与partition分区后数据存储位置相反 bytes.rpartition(sep) batearray.rpartition(sep) ``` ### 13、startswith ``` #判断子序列是否在指定范围内的开头(是否属于当前字节数组的前缀) bytes.startswith(prefix[,start[,end]]) bytearray.startswith(prefix[,start[,end]]) ``` ### 14、translate ``` #删除指定子序列中的字符 bytes.translate(table,delete=b'') bytearray.translate(table,delete=b'') ``` ### 15、center ``` #将序列作为中心点,给序列指定一个新的长度,必须大于原长度,缺少的字符用指定的单字符来填充 bytes.center(width[,fillbyte]) bytearray.center(width[,fillbyte]) ``` ### 16、ljust ``` #同center,不处之处在于缺少的字符在序列右边用指定字符填充 bytes.ljust(width[,fillbyte]) bytearray.ljust(width[,fillbyte]) ``` ### 17、lstrip ``` #判断是否为序列的前缀,删除指定的字符或序列,如果序列左边有空格,参数为空可清除空格 bytes.lstrip([chars]) bytearray.lstrip([chars]) ``` ### 18、rjust ``` #同ljust,在序列左边用指定字符填充 bytes.rjust(width[,fillbyte]) bytearray.rjust(width[,fillbyte]) ``` ### 19、rsplit ``` #删除指定的字符,或连续的序列,把原序列切割成两部分,maxsplit=-1有效,,=0时无效 bytes.rstplit(sep=None,maxsplit=-1) bytearray.rstrip(sep=None,maxsplit=-1) ``` ### 20、rstrip ``` #同lstrip,删除序列的后缀中,指定的字符或序列,如果序列后缀为空格,参数为空时可清除空格 bytes.rtrip([chars]) bytearray.rstrip([chars]) ``` ### 21、split ``` #同split,注意空格与逗号的使用 bytes.split(sep=None,maxsplit=-1) bytearray.split(sep=None,maxsplit=-1) ``` ### 22、strip ``` #同rstrip, 删除指定的字符或序列(连续字符) bytes.strip([chars]) bytearray.strip([chars]) ``` ### 23、capitalize ``` #如果序列的第一个字符为字母,把它转化为大写,否则无效 bytes.capitalize() bytearray.capitalize() ``` ### 24、expandtabs ``` #扩大序列,参数用来改变\t制表符的大小 bytes.expandtabs(tabsize=8) bytearray.expandtabs(tabsize=8) ``` ### 25、isalnum ``` #判断序列是否是包含字母或数字的组合,如果有字母或数字以外的字符返回False bytes.isalnum() bytearray.isalnum() ``` ### 26、isalpha ``` #判断序列是否全是字母,如果有字母以外的字符返回False bytes.isalpha() bytearray.isalpha() ``` ### 27、isdigit ``` #判断序列是否为数字,如果有数字以外有字符返回False bytes.isdigit() bytearray.isdigit() ``` ### 28、islower() ``` #判断序列中的字母是否全为小写,如果不是返回False。 bytes.islower() bytearray.islower() ``` ### 29、isspace ``` #判断序列是否为空格字符的序列,如果有空格以外的字符返回False bytes.isspace() bytearray.isspace() ``` ### 30、istitle ``` #判断当前二进制序列是否为标题类型的序列,格式为每个单词首字母大写,其余为小写,单词间用空格作为分隔符。 bytes.title() bytearray.title() ``` ### 31、isupper ``` #判断序列中的字母是否全为大写,如果存在小写字母返回False bytes.isupper() bytearray.isupper() ``` ### 32、lower ``` #将序列中的大写字母全部设置为小写。 bytes.lower() bytearray.lower() ``` ### 33、splitlines ``` #以换行符\n作为分隔符,将序列分割成若部分,如果参数为False,则子序列隐藏\n分隔符,如果参数为True,则子序列显示换行符\n bytes.splitelines(keepends=False) bytearray.splitelines(keepends=False) ``` ### 34、swapcase ``` #将序列中的所有大写字母转换成小写,所有小写字母转换成大写 bytes.swapcase() bytearray.swapcase() ``` ### 35、title ``` #将当前的序列转换成标题模式:单词的每个首字母大写,以空格作为分隔符 bytes.title() bytearray.title() ``` ### 36、upper ``` #将序列中的字母全部转换成大写字母 bytes.upper() bytearray.upper() ``` ### 37、zfill ``` #用0填充当前的序列为指定长度的序列,以0作为序列的前缀填充,可以有“+”,“-”符号,在“+”或“-”之后,序列之前用0填充。 bytes.zfill(5) bytearray.zfill(5) ``` # bytes与str转换 https://www.malaoshi.top/show_1EF4e2yG4zxA.html 感谢: https://blog.csdn.net/u011978079/article/details/89738094 原文出处:http://www.malaoshi.top/show_1EF2Pg2sje3N.html