一、简介
字节串(bytes)是二进制数据的一种表示形式。它由一系列的字节组成,每个字节都是一个范围为0-255的整数。字节串可以用来表示二进制数据,例如图像、音频、视频、网络数据等。
字节串与字符串(str)类型不同,字符串是由Unicode字符组成的文本数据。而字节串是原始的二进制数据,它不具备字符编码的概念,而是将数据以字节的形式进行存储和处理。
在处理二进制数据时,字节串是非常有用的数据类型。它可以通过多种方式创建,可以进行各种操作,例如查找、替换、拼接、切片等。同时,字节串还可以与文件IO、网络通信等进行结合,用于读取和写入二进制数据。
需要注意的是,字节串是不可变的,这意味着一旦创建,就无法修改其中的字节。如果需要对二进制数据进行修改,可以将字节串转换为可变的字节数组(bytearray)类型进行操作。
二、字串节创建
# 使用字面值表示法创建字节串
data1 = b'Hello'
# 使用字节串字面值前缀创建字节串
data2 = b"World"
# 使用bytes()构造函数创建字节串
data3 = bytes([72, 101, 108, 108, 111])
# 使用字符串的encode()方法将字符串转换为字节串
data4 = "Python".encode()
print(data1) # b'Hello'
print(data2) # b'World'
print(data3) # b'Hello'
print(data4) # b'Python'
三、方法
- Bytes.hex():是一个用于将字节串转换为十六进制字符串的方法。它返回一个表示字节串中每个字节的十六进制值的字符串。
- Bytes.count(sub, start=None, end=None):返回子字节串 sub 在当前字节串中出现的次数。
- Bytes.find(sub, start=None, end=None):返回子字节串 sub 在当前字节串中第一次出现的索引,如果未找到则返回 -1。
- Bytes.title():返回将当前字节串中的每个单词的首字母大写的新字节串。
- Bytes.index(sub, start=None, end=None):返回子字节串 sub 在当前字节串中第一次出现的索引,如果未找到则引发 ValueError。
- Bytes.capitalize():返回将当前字节串的首字母大写的新字节串。
- Bytes.endswith(suffix, start=None, end=None):检查当前字节串是否以指定后缀字节串 suffix 结束,如果是则返回 True,否则返回 False。
- Bytes.isalnum():检查当前字节串是否只包含字母和数字字符,如果是则返回 True,否则返回 False。
- Bytes.isalpha():检查当前字节串是否只包含字母字符,如果是则返回 True,否则返回 False。
- Bytes.isascii():检查当前字节串是否只包含 ASCII 字符,如果是则返回 True,否则返回 False。
- Bytes.isdigit():检查当前字节串是否只包含数字字符,如果是则返回 True,否则返回 False。
- Bytes.islower():检查当前字节串中的字母是否都是小写字母,如果是则返回 True,否则返回 False。
- Bytes.isspace():检查当前字节串是否只包含空白字符,如果是则返回 True,否则返回 False。
- Bytes.istitle():检查当前字节串是否符合标题化规则,如果是则返回 True,否则返回 False。
- Bytes.isupper():检查当前字节串中的字母是否都是大写字母,如果是则返回 True,否则返回 False。
- Bytes.lower():返回将当前字节串转换为小写形式的新字节串。
- Bytes.startswith(prefix, start=None, end=None):检查当前字节串是否以指定前缀字节串 prefix 开头,如果是则返回 True,否则返回 False。
- Bytes.rindex(sub, start=None, end=None):返回子字节串 sub 在当前字节串中最后一次出现的索引,如果未找到则引发 ValueError。
- Bytes.rfind(sub, start=None, end=None):返回子字节串 sub 在当前字节串中最后一次出现的索引,如果未找到则返回 -1。
- Bytes.ljust(width[, fillbyte]): 返回一个左对齐的新字节序列,长度为width。如果指定了fillbyte参数,则使用该字节填充不足的部分。
- Bytes.upper(): 返回一个新的字节序列,其中所有的字节都被转换为大写形式。
- Bytes.center(width[, fillbyte]): 返回一个居中对齐的新字节序列,长度为width。如果指定了fillbyte参数,则使用该字节填充不足的部分。
- Bytes.expandtabs([tabsize]): 返回一个新的字节序列,其中的制表符(\t)被空格字符替换。可选的tabsize参数指定制表符的宽度,默认为8个空格。
- Bytes.fromhex(string): 根据十六进制字符串string创建一个新的字节序列。
- Bytes.lstrip([bytes]): 返回一个去除左侧指定字节序列bytes的新字节序列。如果没有指定bytes参数,则去除左侧的空格字符。
- Bytes.maketrans(x[, y[, z]]): 创建并返回一个字节转换表,用于在Bytes.translate()方法中进行转换。
- Bytes.partition(sep): 将字节序列以第一次出现的分隔符sep为界分成三部分,返回一个元组(before, sep, after)。
- Bytes.replace(old, new[, count]): 返回一个新字节序列,其中所有出现的old字节序列都被替换为new字节序列。可选的count参数指定替换的次数。
- Bytes.rjust(width[, fillbyte]): 返回一个右对齐的新字节序列,长度为width。如果指定了fillbyte参数,则使用该字节填充不足的部分。
- Bytes.rsplit([sep[, maxsplit]]): 返回一个从右侧开始切割的字节序列列表,使用sep作为分隔符,并最多切割maxsplit次。
- Bytes.removeprefix(prefix): 返回一个去除前缀prefix的新字节序列。
- Bytes.rpartition(sep): 将字节序列以最后一次出现的分隔符sep为界分成三部分,返回一个元组(before, sep, after)。
- Bytes.rstrip([bytes]): 返回一个去除右侧指定字节序列bytes的新字节序列。如果没有指定bytes参数,则去除右侧的空格字符。
- Bytes.split([sep[, maxsplit]]): 返回一个以sep作为分隔符切割的字节序列列表,并最多切割maxsplit次。
- Bytes.splitlines([keepends]): 返回一个以行分隔符(\n、\r或\r\n)切割的字节序列列表。可选的keepends参数指定是否保留行分隔符。
- Bytes.swapcase(): 返回一个新的字节序列,其中大小写字母互换。
- Bytes.zfill(width): 返回一个左侧填充零字符(0)的新字节序列,使其长度达到width。
- Bytes.translate(table[, delete]): 返回一个根据转换表table对字节序列进行转换的新字节序列。可选的delete参数指定要删除的字节序列。
- Bytes.decode([encoding[, errors]]): 将字节序列解码为字符串,使用指定的字符编码encoding。可选的errors参数指定解码错误的处理方式。
- Bytes.join(iterable): 返回一个由可迭代对象iterable中的字节序列连接而成的新字节序列。
- Bytes.strip([bytes]): 返回一个去除两侧指定字节序列bytes的新字节序列。如果没有指定bytes参数,则去除两侧的空格字符。
- Bytes.replace(old, new[, count]): 返回一个新字节序列,其中所有出现的old字节序列都被替换为new字节序列。可选的count参数指定替换的次数