字符串方法汇总

方法 描述
s.capitalize() 首字符变大写
s.center(width [, pad]) 在长度为 width 的字段内将字符串居中。pad 是填充字符
s.count(sub [, start [, end]]) 计算指定子字符串 sub 的出现次数
s.decode([encoding [, errors]]) 解码一个字符串并返回一个 Unicode 字符串(只能用于字节字符串)
s.encode([encoding [, errors]]) 返回字符串的编码版本(只能用于 Unicode 字符串)
s.endswith(suffix [, start [, end]]) 检查字符串是否以 suffix 结尾
s.expandtabs([tabsize]) 用空格替换制表符
s.find(sub [, start [, end]]) 找到指定子字符串 sub 首次出现的位置,否则返回 -1
s.format(*args, **kwargs) 格式化 s
s.index(sub [, start [, end]]) 找到指定子字符串 sub 首次出现的位置,否则报错
s.isalnum() 检查所有字符是否都为字母或数字
s.isalpha() 检查所有字符是否都为字母
s.isdigit() 检查所有字符是否都为数字
s.islower() 检查所有字符是否都为小写
s.isspace() 检查所有字符是否都为空白
s.istitle() 检查所有字符是否为标题字符串(每个单词的首字母大写)
s.isupper() 检查所有字符是否都为大写
s.join(t) 用 s 作为分隔符连接序列 t 中的字符串
s.ljust(width [, fill]) 在长度为 width 的字符串内左对齐 s
s.lower() 转换为小写形式
s.lstrip([chrs]) 删掉 chrs 前面的空白字符
s.partition(sep) 用分隔符字符串 sep 划分字符串。返回一个元组 (head, sep, tail),如果未找到 sep,则返回 (s, "","")
s.replace(old, new [, maxreplace]) 替换一个子字符串
s.rfind(sub [, start [, end]]) 找到一个子字符串最后一次出现的位置
s.rindex(sub [, start [, end]]) 找到一个子字符串最后一次出现的位置,否则报错
s.rjust(width [, fill]) 在长度为 width 的字符串内右对齐 s
s.rpartition(sep) 用分隔符字符串 sep 划分字符串 s,但是从字符串的结尾处开始搜索
s.rsplit([sep [, maxsplit]]) 用 sep 作为分隔符对字符串从后往前进行划分。maxsplit 是划分的最大次数。如果省略 maxsplit,结果与 split() 方法完全相同
s.rstrip([chrs]) 删掉 chrs 尾部的空白字符
s.split([sep, [, maxsplit]]) 用 sep 作为分隔符对字符串进行划分。maxsplit 是划分的最大次数
s.splitlines([keepends]) 将字符串分为一个行列表。如果 keepends 为 1,则保留各行最后的换行符
s.startswith(prefix [, start [, end]]) 检查一个字符串是否以 prefix 开头
s.strip([chrs]) 删掉 chrs 开头和结尾的空白字符
s.swapcase() 将大写转换为小写,小写转换成大写
s.title() 将字符串转换为标题格式
s.translate(table [, deletechars]) 用一个字符转换表 table 转换字符串,删除 deletechars 中的字符
s.upper() 将一个字符串转换为大写形式
s.zfill(width) 在字符串的左边填充 0,直至其宽度为 width

尽管这些方法操作的都是字符串实例,但它们实际上不会修改底层的字符串数据。因此,诸如 s.capitalize()、s.center() 和 s.expandtabs()这样的方法始终返回一个新的字符串,而不会修改字符串 s。如果字符串 s 中的所有字符均满足测试条件,像 s.isalnum() 和 s.isupper() 这样的方法就会返回 True 或 False。此外,如果字符串的长度为 0,这些测试始终返回 False。

s.find()、s.index()、s.rfind()和 s.rindex() 方法用于在 s 中搜索一个子字符串。所有这些函数都返回一个整数,其值代表该子字符串在 s 中的索引。另外,如果未找到子字符串,find()方法将返回 -1,而 index() 方法会引发一个 ValueError 异常。s.replace() 方法可使用相应文本替换一个子字符串。要重点强调的是,所有这些方法都只能处理简单的子字符串。正则表达式模式匹配和搜索是使用 re 库模块中的函数处理的。

s.split()和 s.rsplit() 方法可通过分隔符将一个字符串划分为一个字段列表。s.partition()和 s.rpartition() 方法用于搜索一个分隔符子字符串,并将 s 分为 3 个部分:分隔符之前的文本,分隔符本身,以及分隔符之后的文本。

很多字符串方法都接受可选的 start 和 end 参数,其值为整数,用于指定 s 中起始和结束位置的索引。大多数情况下,这些值可以为负值,表示索引是从字符串结尾处开始计算的。

s.translate()方法用于执行高级的字符替换操作,例如快速将所有控制字符抽离出字符串。它接受一个转换表作为参数,该转换表中包含原始字符串中的字符与结果字符之间的一对一映射。8 位字符串的转换表是一个 256 个字符的字符串,而 Unicode 字符串的转换表可以是任意序列对象 s,其中 s[n] 返回一个整数字符码,或对应于整数值 n 的 Unicode 字符。

s.encode()和 s.decode() 方法用于在字符串数据与指定字符编码之间来回转换。它们接受一个编码名称作为输入,如’ascii’、‘utf-8’或’utf-16’。这些方法常用于将 Unicode 字符串转换为适合 I/O 操作的数据编码。请注意,在 Python3 中,encode()方法只能用于字符串,而 decode() 方法只能用于字节数据类型。

s.format()方法用于执行字符串格式化操作。它接受任意方式组合的位置参数与关键字参数。s 中使用 {item} 表示的占位符将被适当的参数所替代。位置参数可以使用像 {0} 和{1}这样的占位符进行引用,而关键字参数可以使用 {name} 这样的占位符进行引用,例如:

>>> a = "Your name is {0} and your age is {age}"
>>> a.format("Mike", age=40)
'Your name is Mike and your age is 40'
>>>

在特殊的格式化字符串中,{item}占位符还可以包括简单的索引和属性查找。例如,占位符 {item[n]}(n 为数字)会对 item 进行一次序列查找。占位符{item[key]}(key 为非数字字符串)会执行一次字典查找 item[“key”]。占位符{item.attr} 引用的是 item 的属性 attr

>>> a = "Your name is {name[0]} and your age is {age[mike]}"
>>> a.format(name=['Mike', 'Jhon'], age={'mike': 40, 'Jhon': 35})
'Your name is Mike and your age is 40'
>>>