目录
引言:
len()函数
split()函数
join() 函数
count 方法
find() 方法
index() 方法
字符串大小写转换
删除指定字符
字符串对齐方法
startswith()和endswith()方法
encode()和decode()方法
dir()和help()帮助函数
引言:
本文主要记录字符串常用函数及例子。
len()函数
作用:要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。
语法:len(string)
注意:在 Python 中,不同的字符所占的字节数不同,数字、英文字母、小数点、下划线以及空格,各占一个字节,而一个汉字可能占 2~4 个字节,具体占多少个,取决于采用的编码方式。例如,汉字在 GBK/GB2312 编码中占用 2 个字节,而在 UTF-8 编码中一般占用 3 个字节。
以 UTF-8 编码为例,字符串“人生苦短,我用Python!”所占用的字节数如图 1 所示。
我们可以通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。例如,采用 UTF-8 编码方式,计算“人生苦短,我用Python”的字节数,可以执行如下代码:
例1:
str1 = "人生苦短,我用python!"
len(str1.encode())
结果:
27
注:因为汉字加中文标点符号共 7 个,占 21 个字节,而英文字母和英文的标点符号占 6 个字节,一共占用 27 个字节。
例2:
str1 = "人生苦短,我用python!"
len(str1.encode("gbk"))
结果:
20
注:获取采用 GBK 编码的字符串的长度
split()函数
作用:split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。
语法:str.split(sep,maxsplit)
--sep:用于指定分隔符,可以包含多个字符。此参数默认为 None;
--maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。
注:在 split ()方法中,如果不指定 sep 参数,那么也不能指定 maxsplit 参数。
split() 方法默认采用空字符进行分割,但当字符串中有连续的空格或其他空字符时,都会被视为一个分隔符对字符串进行分割。
join() 函数
作用:是 split() 方法的逆方法,用来将列表(或元组)中包含的多个字符串连接成一个字符串。
语法:newstr = str.join(iterable)
--str:用于指定合并时的分隔符;
--iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。
例子:
list = ["a","b","c"]
y = ''.join(list)
print(y)
print(type(y))
结果:abc
<class 'str'>
注:分隔符是空字符
count 方法
作用:count 方法用于检索指定字符串在另一字符串中出现的次数,如果检索的字符串不存在,则返回 0,否则返回出现的次数。
语法:str.count(sub[,start[,end]])
--str:表示原字符串;
--sub:表示要检索的字符串;
--start:指定检索的起始位置,默认从头开始检索;
--end:指定检索的终止位置,默认检索到结尾。
find() 方法
作用:检索字符串中是否包含目标字符串,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1。
语法:str.find(sub[,start[,end]])
--str:表示原字符串;
--sub:表示要检索的字符串;
--start:指定检索的起始位置,默认从头开始检索;
--end:指定检索的终止位置,默认检索到结尾。
注:python还提供了 rfind() 方法,与 find() 方法最大的不同在于,rfind() 是从字符串右边开始检索。
index() 方法
作用:检索是否包含指定的字符串,同 find() 方法类似,不同之处在于,当指定的字符串不存在时,index() 方法会抛出异常。
语法:str.index(sub[,start[,end]])
字符串大小写转换
python的字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。
title() 方法
作用:将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。如果字符串中没有需要被转换的字符,此方法会将字符串原封不动地返回。语法:str.title()
lower()方法
作用:将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串。如果字符串中原本就都是小写字母,则该方法会返回原字符串。
语法:str.lower()
upper()方法
作用:upper() 的功能和 lower() 方法恰好相反,它用于将字符串中的所有小写字母转换为大写字母,和以上两种方法的返回方式相同,即如果转换成功,则返回新字符串;反之,则返回原字符串。
语法:str.upper()
删除指定字符
字符串变量提供了 3 种方法来删除字符串中多余的空格和特殊字符,它们分别是:
- strip():删除字符串前后(左右两侧)的空格或特殊字符。
- lstrip():删除字符串前面(左边)的空格或特殊字符。
- rstrip():删除字符串后面(右边)的空格或特殊字符。
语法:str.strip([chars])
--[chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符。
字符串对齐方法
str 提供了 3 种可用来进行文本对齐的方法,分别是 ljust()、rjust() 和 center() 方法。
ljust() 方法的功能是向指定字符串的右侧填充指定字符,从而达到左对齐文本的目的。
rjust() 方法是向字符串的左侧填充指定字符,从而达到右对齐文本的目的。
center() 字符串方法与 ljust() 和 rjust() 的用法类似,但它让文本居中,而不是左对齐或右对齐。
格式:str.center(width[, fillchar])
startswith()和endswith()方法
startswith()方法
作用:检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。
语法:
str.startswith(sub[,start[,end]])
--start:指定检索开始的起始位置索引,默认从头开始检索;
--end:指定检索的结束位置索引,默认一直检索在结束。
endswith()方法
endswith() 方法用于检索字符串是否以指定字符串结尾,如果是则返回 True;反之则返回 False。
使用方法同startswith()方法
encode()和decode()方法
最早的字符串编码是 ASCII 编码,它仅仅对 10 个数字、26 个大小写英文字母以及一些特殊字符进行了编码。ASCII 码做多只能表示 256 个符号,每个字符只需要占用 1 个字节。
GBK 和 GB2312 是我国制定的中文编码标准,规定英文字符母占用 1 个字节,中文字符占用 2 个字节;而 UTF-8 是国际通过的编码格式,它包含了全世界所有国家需要用到的字符,其规定英文字符占用 1 个字节,中文字符占用 3 个字节。
python3.x 默认采用 UTF-8 编码格式,有效地解决了中文乱码的问题。
在 Python 中,有 2 种常用的字符串类型,分别为 str 和 bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。
encode()方法
encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为“编码”。
格式:str.encode([encoding="utf-8"][,errors="strict"])
decode()方法
和 encode() 方法正好相反,decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”。
语法:
bytes.decode([encoding="utf-8"][,errors="strict"])
dir()和help()帮助函数
dir() 函数用来列出某个类或者某个模块中的全部内容,包括变量、方法、函数和类等,
用法:dir(obj)
--obj 表示要查看的对象。obj 可以不写,此时 dir() 会列出当前范围内的变量、方法和定义的类型。
help() 函数用来查看某个函数或者模块的帮助文档,
用法:help(obj)
obj 表示要查看的对象。obj 可以不写,此时 help() 会进入帮助子程序。
掌握了以上两个函数,我们就可以自行查阅 Python 中所有方法、函数、变量、类的用法和功能了。