python 内置类型简述(2) —— 字符类型(str、bytes、bytearray)

注:Iterable[int] 为任一元素为 int 类型的可迭代对象,如列表 [1, 2, 3]
注:str() 为一个字符串实例,可用任一字符串替换(如 ‘asd’),bytes()、bytearray() 同理

1. 创建一个字符串

注:bytes() 为不可变序列类型,bytearray() 为可变序列类型
bytes():创建空 bytes 对象
bytes(int):创建长度为 int 的,以零值填充的 bytes 对象
bytes(Iterable[int]):通过 Iterable[int] 创建 bytes 对象;需 0<=int<256,否则会引发 ValueError
bytes(str, encoding=‘utf=8’、…):使用 encoding 编码方式,通过 str 字面值创建 bytes 对象

注:bytes.fromhex(…)、bytearray.fromhex(…) 用法相同
bytes.fromhex(hex):返回一个解码给定字符串的 bytes 对象;两个十六进制数码对应一个字节
注:bytes()、bytearray() 类型数据用法相同
bytes().hex():返回一个字符串,其包含 bytes 中每个字节的两个十六进制数字
bytes().hex(sep=str):指定输出的十六进制码中,单个数码之间的分隔符
bytes().hex(sep=str, bytes_per_sep=int):每输出 int 个数码输出一个分隔符;负数表示从左开始计算,正数表示从右开始

2. 获取字符串长度(length)

注:str、bytes、bytearray 类型参数用法相同

len(str):返回 str 的长度(元素个数)

3. 字符串拼接(concatenate)

注:str()、bytes()、bytearray() 类型数据用法相同

str() + str():将 str_2 拼接到 str_1 之后,返回拼接后的字符串
str() * int == int * str():与自身拼接 int 次,返回拼接后的字符串

4. 查找子字符串(select_elem)

注:… in …、… not in … 函数用法相同
注:str()、bytes()、bytearray() 类型数据用法相同
str() in str():str_1 是 str_2 的子串,返回 True

注:.find、.rfind 用法相同
注:.find 从左往右查找,.rfind 从右往左查找
注:str()、bytes()、bytearray() 类型数据用法相同
str().find(str):返回 str_2 在 str_1 中被找到的索引;找不到 str_2 时,返回 -1
str().find(str, int):在 [int_1, -1] 范围内查找
str().find(str, int, int):在 [int_1, int_2) 范围内查找

注:str()、bytes()、bytearray()
str().index(str):在 str_1 中查找 str_2,返回找到的第一个结果的索引;找不到字符串,引发 ValueError
str().index(str, int):在 str_1[int, -1] 范围查找
str().index(str, int, int):在 str_1[int_1, int_2) 范围查找
str().rindex(…):返回找到的最后一个结果的索引

注:str()、bytes()、bytearray()
str().count(str):返回 str_2 在 str_1 中非重叠出现的次数
str().count(str, int):在 str_1[int, -1] 范围查找
str().count(str, int, int):在 str_1[int_1, int_2) 范围查找

5. 判断字符串中的元素类型(logic_judge)

注:str()、bytes()、bytearray() 类型数据用法相同
str().isalnum():所有字符都是字母或数字,且 len(str)>0,返回 True
str().isalpha():所有字符都是字母,且 len(str)>0,返回 True
str().isspace():所有字符都是空白字符,且 len(str)>0,返回 True
str().isascii():所有字符都是 ASCII,或 len(str)=0,返回 True
str().isdigit():所有字符都是数字,且 len(str)>0,返回 True

注:以下 4 个方法仅 str() 字符串可用,bytes() 字节类型数据不可用
str().isdecimal():所有字符都是十进制字符,且 len(str)>0,返回 True
str().isnumeric():所有字符都是数值,且 len(str)>0,返回 True

str().isidentifier():字符串是有效的标识符,返回 True

str().isprintable():所有字符均为可打印字符,或 len(str)=0,返回 True

6. 字符串格式化(format)

var = ‘a’
‘…{}…’.format(var) == f’…{var}…':字符串格式化

7. 字符串拼接、拆分(concatenate_split)

注:str()、bytes()、bytearray() 类型数据用法相同
str().join(Iterable[str]):返回由 iterable 中的字符串拼接而成的字符串,str 作为元素间的分隔符;iterable 存在非字符串值,引发 TypeError(包括 bytes)

注:.split() 与 .rsplit() 用法相同
注:.split() 从左边开始拆分,.rsplit() 从右边开始拆分
注:str()、bytes()、bytearray() 类型数据用法相同
str().split():将 str 拆分成子字符串组成的列表,使用空白字符作为分隔符
str().split(str):使用 str_2 作为分隔符
str().split(maxsplit=int):最多进行 int 次拆分
注:str()、bytes()、bytearray() 类型数据用法相同
str().splitlines():在 ASCII 行边界符的位置拆分
str().splitlines(keepends=True):结果列表中包含换行符

注:str()、bytes()、bytearray() 类型数据用法相同
str().partition(str):str_2 作为分隔符,在 str_2 第一次出现的位置拆分,返回 tuple(分隔符之前的部分,分隔符,分隔符之后的部分);若未找到分隔符,则返回 tuple(原字符串,‘’,‘’)
str().rpartition(str):在 str_2 最后一次出现的位置拆分

注:str()、bytes()、bytearray() 类型数据用法相同
str().removeprefix(str):若 str_1 以 str_2 开头,返回 str_2 之后的部分;否则,返回 str_1 的副本
str().removesuffix(str):若 str_1 以 str_2 结尾,返回 str_2 之前的部分

8. 字符大小写(upper_lower)

注:str()、bytes()、bytearray() 类型数据用法相同
str().title():每个单词第一个字符转为大写,其他字符转为小写
str().upper():小写 ASCII 字符转换为大写
str().lower():大写 ASCII 字符转换为小写
str().swapcase():大写字符转换为小写,小写转换为大写

注:str()、bytes()、bytearray() 类型数据用法相同
str().istitle():字符串为标题字符串,且 len(str)>0,返回 True
str().isupper():字符串中至少有一个区分大小写的字符,且此类字符均为大写,返回 True
str().islower():字符串中至少有一个区分大小写的字符,且此类字符均为小写,返回 True

9. 对字符串两端进行操作(start_end)

注:.strip、.lstrip、.rstrip 用法相同
注:.strip 移除两边字符,.lstrip 移除左边字符,.rstrip 移除右边字符
注:str()、bytes()、bytearray() 类型数据用法相同
str().strip():移除 str 两边的空白
str().strip(str):设置要移除的字符串 str(参数值的所有组合)

注:.center、.ljust、.rjust 用法相同
注:.center 原字符串居中,.ljust 原字符串靠左,.rjust 原字符串靠右
注:str()、bytes()、bytearray() 类型数据用法相同
str().center(int):返回长度为 int 的字符串,str 居中,两边使用空格填充
str().center(int, str):使用 str_2 填充
注:str()、bytes()、bytearray() 类型数据用法相同
str().zfill(int):注:返回长度为 int 的字符串,str 靠右,左边填充 ASCII 0

注:.startswith、.endswith 用法相同
注:.startswith 检查开始部分,.endswith检查结尾部分
注:str()、bytes()、bytearray() 类型数据用法相同
str().startswith(str、tuple[str]):str_1 以 str_2 或 tuple 中任一 str 开始,返回 True
str().startswith(str、tuple[str], int):在 [int_1, -1] 范围内查找
str().startswith(str、tuple[str], int, int):在 [int_1, int_2) 范围内查找

10. 替换子字符串 (replace_elem)

注:str()、bytes()、bytearray() 类型数据用法相同
str().replace(str, str):在 str_1 中查找 str_2,使用 str_3 替换
str().replace(str, str, int):最多替换 int 个

注:str()、bytes()、bytearray() 类型数据用法相同
str().expandtabs():将字符串中的 \t 替换为一个或多个空格,直到当前列等于下一个制表位;若遇到 \n 或 \r,则将当前列数置为 0;默认 8 个字符为一个制表位
str().expandtabs(int):设置 int 个字符为一个制表位

11. 字符串编码与解码(encode_decode)

str().encode(encoding=‘utf-8’、…):返回编码为 bytes 的字符串;编码错误会引发 UnicodeError
str().encode(encoding=‘utf-8’、…, errors=‘ignore’、…):控制如何处理编码错误

注:bytes()、bytearray() 类型数据用法相同
bytes().decode(encoding=‘utf-8’、…):返回解码为str 的字节串;解码错误会引发 UnicodeError
bytes().decode(encoding=‘utf-8’、…, errors=‘ignore’、…)

errors 参数:
ignore:忽略错误
replace:用替代标记替换。编码时,使用 ? (ASCII 字符);解码时,使用 � (U+FFFD,官方的 REPLACEMENT CHARACTER)
backslashreplace:用反斜杠转义序列替换。编码时,使用格式为 \xhh \uxxxx \Uxxxxxxxx 的 Unicode 码位十六进制表示形式;解码时,使用格式为 \xhh 的字节值十六进制表示形式
surrogateescape:解码时,将字节替换为 U+DC80 至 U+DCFF 范围内的单个代理代码;编码时,此代理将被转换回相同的字节(适用于处理具有未知编码格式的文件)
xmlcharrefreplace:用 XML/HTML 数字字符引用替换(格式为 &#num; 的 Unicode 码位十进制表示形式)
namereplace:用 \N{…} 转义序列替换,出现在花括号中的是来自 Unicode 字符数据库的 Name 属性

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值