请稍候,加载中....

字符相关函数

主要有以下函数:

  1. ascii函数
  2. ord函数
  3. chr函数
  4. bytearray函数
  5. bytes函数

ascii函数

非ascii编码的字符返回unicode编码

ascii("python-xp手册")
# "'python-xp\\u624b\\u518c'"

ord函数

获得字符对应的Unicode编码

ord("a")
# 97
ord("我")
# 25105

chr函数

根据Unicode编码返回字符,与ord互为逆函数

chr(97)
# “a"
chr(25105)
# "我“

bytearray函数

返回字节数组对象

bytearray是由八位字节组成的数组,每个字节的最大数不能超过2**8,即256

示例1: 创建一个空的字节数组对象

array = bytearray()
# array是一个0长度的字节数组
print(array)
#输出

#bytearray(b'')
print(len(array))
#输出0

字节数组的每个元素只能是数字,因为所有的字符串本质都是数字形式存在于字节中

示例2: 创建一个由4个字节组成的空数组

#当bytearray传递一个正整数实参N时,创建一个N长度的字节数组
#每个字节用0填充
array = bytearray(4) 
print(array)

#输出
#bytearray(b'\x00\x00\x00\x00')

示例3:将一个字符串转换成一个字节数组

# 将字符串转换成字节数组,必须使用encoding指定字符编码
array = bytearray("我", encoding="utf-8")
print(array)

#输出三个字节的字节数组
bytearray(b'\xe6\x88\x91')

事实上我们可以直接将b'\xe6\x88\x91'填充进一个字节数组

示例4: 使用数字序列填充字节数组

# utf-8编码的16进制数字
array = bytearray([0xe6, 0x88, 0x91])
print(array.decode("utf-8"))
#输出 "我"
#也可以使用10进制数字填充
array = bytearray([230, 136, 145])

bytearray是一个可变序列

方法 说明
bytearray.clear() 清空
bytearray.append(n) 追加一个字节(n为0~255的整数)
bytearray.remove(value) 删除第一个出现的字节,如果没有则产生ValueError错误
bytearray.reverse() 字节数组顺序进行反转
bytearray.decode(encoding='utf-8') 将字节转为字符串
bytearray.find(sub[, start[,end]]) 查找子字节串,这里的字串一定要是字节类型

bytes函数

将字符串转换成不可变序列字节组

示例1: 创建空字节

byte_seq = bytes()

示例2: 创建指定长度的字节组

byte_seq = bytes(3)
print(byte_seq)
# 输出 b'\x00\x00\x00'

示例3: 字节数据创建bytes

byte_seq = bytes("我",encoding="utf-8")
# 非ascii码要指定编码格式
print(byte_seq)
#输出 b'\xe6\x88\x91'

示例4: 通过数字创建bytes

byte_seq = bytes([0xe6,0x88,0x91]) 
byte_seq = bytes([230, 136, 145])
# “我”的字节序列

bytes与bytearray的区别在于bytes为不可变序列


Python学习手册-