字符串方法集合
- str.capitalize() -----------首字母大写
- str.casefold() -------------消除大小写
- str.center(width [,fillchar]) ---------居中对齐
- str.ljust(width[,fillchar]) ----------左对齐
- str.rjust(width[, fillchar]) ----------右对齐
- str.count(sub[,start[,end]]) ----------统计个数
- str.encode(encoding='utf-8', errors='strict') ---------编码
- str.endwith(suffix[,start[,end]]) -----------后缀判断
- str.startswith(prefix[, start[, end]])------------前缀判断
- str.expandtabs(tabsize=8) ----------空格拓展
- str.find(sub[,start[,end]]) ----------找到第一个的位置
- str.rfind(sub[, start[, end]]) --------------找到最后一个的位置
- str.format(*args, **kwargs) ----------格式化
- str.format_map(mapping) ------------格式化(字典方法)
- str.index(sub[,start[,end]]) ----------最左
- str.rindex(sub[, start[, end]]) ------------最右
- str.isalpha() -----------------字母
- str.isnumeric() ---------------数字
- str.isalnum() -------------数字+字母
- str.isascii()-----------是否ASCII码字符
- str.isdecimal()-----------是否十进制字符串
- str.isdigit()-------------是否数字字符串
- str.isindentifier() ---------------是否标识符
- str.islower()---------是否小写
- str.lower() -----------小写化
- str.isupper() ----------大是否写
- str.upper() -----------大写化
- str.swapcase() ------------大小写互换
- str.isprintable() --------是否打印字符
- str.isspace() ----------是否为空白字符串
- str.istitle() ------------是否为标题格式
- str.title() -------------标题格式化
- str.join(iterable) -------------连接字符串列表
- str.lstrip([chars]) -------------左移除(字符组合)
- str.rstrip([chars]) ------------右移除(字符组合)
- str.strip([chars])------------双边移除(字符组合)
- str.maketrans(x[, y[, z]]) -----------生成映射表
- str.translate(table) -----------根据映射表变换字符串
- str.partition(sep) ------------三元分割(左)
- str.rpartition(sep)-----------三元分割(右)
- str.removeprefix(prefix, /) -----------左移除(特定字符串)
- str.removesuffix(suffix, /)----------右移除(特定字符串)
- str.replace(old, new[, count])------------替换
- str.rsplit(sep=None, maxsplit=- 1) ---------拆分(右)
- str.split(sep=None, maxsplit=- 1)----------拆分(左)
- str.splitlines(keepends=False)-----------拆分(行)
- str.zfill(width) --------------'0'填充
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0fe61cd53fb3b6ca0666ab280401de3a.png)
str.capitalize() -----------首字母大写
一句话的首字母大写,返回原字符串的副本,其首个字符大写,其余为小写。
str.casefold() -------------消除大小写
返回原字符串消除大小写的副本。 消除大小写的字符串可用于忽略大小写的匹配。
casefold比lower更强大,lower只能小写ASCII字符,而casefold可以小写一些其他语言的大小写。
str.center(width [,fillchar]) ---------居中对齐
返回长度为 width 的字符串,原字符串在其正中。 使用指定的 fillchar 填充两边的空位(默认使用空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
这个功能可能对于初学者命令行编程比较有用,比如要写一个命令行界面
扩充到50位,Welcome放在中间,用’*'填充
str.ljust(width[,fillchar]) ----------左对齐
返回长度为 width 的字符串,原字符串左对齐。 使用指定的 fillchar 填充两边的空位(默认使用空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
str.rjust(width[, fillchar]) ----------右对齐
返回长度为 width 的字符串,原字符串在其中靠右对齐。 使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
str.count(sub[,start[,end]]) ----------统计个数
返回子字符串 sub 在 [start, end] 范围内非重叠出现的次数。 可选参数 start 与 end 会被解读为切片表示法。实现方法也很简单,就是范围内遍历。
str.encode(encoding=‘utf-8’, errors=‘strict’) ---------编码
返回原字符串编码为字节串对象的版本。 默认编码为 ‘utf-8’。 可以给出 errors 来设置不同的错误处理方案。 errors 的默认值为 ‘strict’,表示编码错误会引发 UnicodeError。 其他可用的值为 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及任何其他通过 codecs.register_error() 注册的值。
简单来说就是把字符串编码成具体字节串对象,根据你需要的编码方式生成二进制编码。
b’的意思就是现在这是一串具体编码的字节串
str.endwith(suffix[,start[,end]]) -----------后缀判断
后面两个参数和count一样,这个方法也提供了检测切片的功能
如果字符串以指定的 suffix 结束返回 True,否则返回 False。 suffix 也可以为由多个供查找的后缀构成的元组。 如果有可选项 start,将从所指定位置开始检查。 如果有可选项 end,将在所指定位置停止比较。
str.startswith(prefix[, start[, end]])------------前缀判断
如果字符串以指定的 prefix 开始则返回 True,否则返回 False。 prefix 也可以为由多个供查找的前缀构成的元组。 如果有可选项 start,将从所指定位置开始检查。 如果有可选项 end,将在所指定位置停止比较。
str.expandtabs(tabsize=8) ----------空格拓展
返回字符串的副本,其中所有的制表符会由一个或多个空格替换,具体取决于当前列位置和给定的制表符宽度。 每 tabsize 个字符设为一个制表位(默认值 8 )
开头和结尾和\t都是计数位,如果计数位到上一个计数位的字符数少于tabsisze,那么就填充空格到tabsize。如果计数位之间的字符数已经超过了tabsize,那么就填充tabsize的倍数,例如Hello World tabszie如果为4,那么只能填充到8。取倍数填充!
str.find(sub[,start[,end]]) ----------找到第一个的位置
返回子字符串 sub 在 s[start:end] 切片内被找到的最小索引。 可选参数 start 与 end 会被解读为切片表示法。 如果 sub 未被找到则返回 -1。
官方推荐,如果只需要判断子字符串是否被包含,是用 sub in str就好,除非你需要知道子字符串具体位置。
str.rfind(sub[, start[, end]]) --------------找到最后一个的位置
返回子字符串 sub 在字符串内被找到的最大(最右)索引,这样 sub 将包含在 s[start:end] 当中。 可选参数 start 与 end 会被解读为切片表示法。 如果未找到则返回 -1。
str.format(*args, **kwargs) ----------格式化
这个应该挺熟悉的,就是字符串格式化操作,被{}包含的区域会被替换,可以使用{:}冒号后加入具体的格式要求来实现格式化,现在一般使用f"{}"。
str.format_map(mapping) ------------格式化(字典方法)
同样的字符串格式化操作,不同的是传入的是一个字典
'{name} was born in {country}'.format_map({'name':'Guido','country':'China'})
str.index(sub[,start[,end]]) ----------最左
类似与find(),但是如果找不到子字符串会报错,而不再是返回-1
str.rindex(sub[, start[, end]]) ------------最右
类似于 rfind(),但在子字符串 sub 未找到时会引发 ValueError。
str.isalpha() -----------------字母
如果字符串中的所有字符都是字母,并且至少有一个字符,返回 True ,否则返回 False 。
str.isnumeric() ---------------数字
顾名思义,是否是数字,其中还包含了一些Unicode中设置了数值特性的字符,例如U+2155等
str.isalnum() -------------数字+字母
判断字符串是否是数字和字母的组合。不能有转义符,不能有空格,不能为空~
str.isascii()-----------是否ASCII码字符
如果字符串为空或字符串中的所有字符都是 ASCII ,返回 True ,否则返回 False 。ASCII 字符的码点范围是 U+0000-U+007F
ASCII的范围比较小,有时候需要判断是否在ASCII码内,就用这个函数。
str.isdecimal()-----------是否十进制字符串
如果字符串中的所有字符都是十进制字符且该字符串至少有一个字符,则返回 True , 否则返回 False 。
str.isdigit()-------------是否数字字符串
如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True ,否则返回 False 。 数字包括十进制字符和需要特殊处理的数字,如兼容性上标数字。这包括了不能用来组成 10 进制数的数字,如 Kharosthi 数。 严格地讲,数字是指属性值为 Numeric_Type=Digit 或 Numeric_Type=Decimal 的字符。
str.isindentifier() ---------------是否标识符
字符串能否作为标识符,标识符的定义应该都知道,以字母或_开头,不能以数字开头。
str.islower()---------是否小写
如果存在可区分大小写的字母,是否全是小写,有大写就False。
str.lower() -----------小写化
返回原字符串的副本,其所有区分大小写的字符均转换为小写。
str.isupper() ----------大是否写
如果字符串中至少有一个区分大小写的字符 4 且此类字符均为大写则返回 True ,否则返回 False 。与islower()是一对
str.upper() -----------大写化
返回原字符串的副本,其中所有区分大小写的字符 4 均转换为大写。
str.swapcase() ------------大小写互换
返回原字符串的副本,其中大写字符转换为小写,反之亦然。 请注意 s.swapcase().swapcase() == s 并不一定为真值。
str.isprintable() --------是否打印字符
如果字符串中所有字符均为可打印字符或字符串为空则返回 True ,否则返回 False 。 不可打印字符是在 Unicode 字符数据库中被定义为 “Other” 或 “Separator” 的字符,例外情况是 ASCII 空格字符 (0x20) 被视作可打印字符。
str.isspace() ----------是否为空白字符串
如果字符串中只有空白字符且至少有一个字符则返回 True ,否则返回 False 。
str.istitle() ------------是否为标题格式
如果字符串中至少有一个字符且为标题字符串则返回 True ,例如大写字符之后只能带非大写字符而小写字符必须有大写字符打头。 否则返回 False 。
str.title() -------------标题格式化
返回原字符串的标题版本,其中每个单词第一个字母为大写,其余字母为小写。
str.join(iterable) -------------连接字符串列表
经常会用到的就是’’ ".join(iterable),把一个字符串列表连在一起。返回一个由 iterable 中的字符串拼接而成的字符串。 如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError。
str.lstrip([chars]) -------------左移除(字符组合)
返回原字符串的副本,移除其中的前导字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀;而是会移除参数值的所有组合。
str.rstrip([chars]) ------------右移除(字符组合)
返回原字符串的副本,移除其中的末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个后缀;而是会移除参数值的所有组合
str.strip([chars])------------双边移除(字符组合)
返回原字符串的副本,移除其中的前导和末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀或后缀;而是会移除参数值的所有组合。
最外侧的前导和末尾 chars 参数值将从字符串中移除。 开头端的字符的移除将在遇到一个未包含于 chars 所指定字符集的字符时停止。 类似的操作也将在结尾端发生。
str.maketrans(x[, y[, z]]) -----------生成映射表
生成一个供str使用的转换表,此静态方法返回一个可供 str.translate() 使用的转换对照表。
如果只有一个参数,则它必须是一个将 Unicode 码位序号(整数)或字符(长度为 1 的字符串)映射到 Unicode 码位序号、(任意长度的)字符串或 None 的字典。 字符键将会被转换为码位序号。
如果有两个参数,则它们必须是两个长度相等的字符串,并且在结果字典中,x 中每个字符将被映射到 y 中相同位置的字符。 如果有第三个参数,它必须是一个字符串,其中的字符将在结果中被映射到 None。
简而言之就是给出一个映射,使得字符串中某些字符被替换成另一些字符,如果只有一个参数(给出的是字典形式),那么可以实现一个字符映射到一个字符串,如果是两个或三个参数,那么只能是字符映射到字符。
将’H’映射为’abs’,使用maketrans得到字符串映射表,使用此映射表转换字符串
str.translate(table) -----------根据映射表变换字符串
返回原字符串的副本,其中每个字符按给定的转换表进行映射。 转换表必须是一个使用 getitem() 来实现索引操作的对象,通常为 mapping 或 sequence。 当以 Unicode 码位序号(整数)为索引时,转换表对象可以做以下任何一种操作:返回 Unicode 序号或字符串,将字符映射为一个或多个字符;返回 None,将字符从结果字符串中删除;或引发 LookupError 异常,将字符映射为其自身。
str.partition(sep) ------------三元分割(左)
在 sep 首次出现的位置拆分字符串,返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。 如果分隔符未找到,则返回的 3 元组中包含字符本身以及两个空字符串。
与split()的不同之处是partition只分割为三部分,分隔符左边,分隔符以及分隔符右边。只选择第一个遇到的分隔符。
str.rpartition(sep)-----------三元分割(右)
在 sep 最后一次出现的位置拆分字符串,返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。 如果分隔符未找到,则返回的 3 元组中包含两个空字符串以及字符串本身。
str.removeprefix(prefix, /) -----------左移除(特定字符串)
如果字符串以前缀字符串开头,返回 string[len(prefix):] 。否则,返回原始字符串的副本
str.removesuffix(suffix, /)----------右移除(特定字符串)
同上,区别是如果字符串以后缀字符串结尾,并且 后缀 非空,返回 string[:-len(suffix)] 。否则,返回原始字符串的副本。
remove和strip的区别是:remove必须是按顺序的字符序列,strip是删除给出的字符组合。
str.replace(old, new[, count])------------替换
返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。 如果给出了可选参数 count,则只替换前 count 次出现。
str.rsplit(sep=None, maxsplit=- 1) ---------拆分(右)
返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit 次拆分,从 最右边 开始。 如果 sep 未指定或为 None,任何空白字符串都会被作为分隔符。 除了从右边开始拆分,rsplit() 的其他行为都类似于下文所述的 split()。
str.split(sep=None, maxsplit=- 1)----------拆分(左)
返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit 次拆分(因此,列表最多会有 maxsplit+1 个元素)。 如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)。
如果给出了 sep,则连续的分隔符不会被组合在一起而是被视为分隔空字符串 (例如 ‘1,2’.split(‘,’) 将返回 [‘1’, ‘’, ‘2’])。 sep 参数可能由多个字符组成 (例如 ‘1<>2<>3’.split(‘<>’) 将返回 [‘1’, ‘2’, ‘3’])。 使用指定的分隔符拆分空字符串将返回 [‘’]。
如果 sep 未指定或为 None,则会应用另一种拆分算法:连续的空格会被视为单个分隔符,其结果将不包含开头或末尾的空字符串,如果字符串包含前缀或后缀空格的话。 因此,使用 None 拆分空字符串或仅包含空格的字符串将返回 []。
str.splitlines(keepends=False)-----------拆分(行)
返回由原字符串中各行组成的列表,在行边界的位置拆分。 结果列表中不包含行边界,除非给出了 keepends 且为真值。
split(‘\n’)会保留后面的空字符串,而splitlines()不会
str.zfill(width) --------------'0’填充
返回原字符串的副本,在左边填充 ASCII ‘0’ 数码使其长度变为 width。 正负值前缀 (‘+’/‘-’) 的处理方式是在正负符号 之后 填充而非在之前。 如果 width 小于等于 len(s) 则返回原字符串的副本。