Python中字符串对象提供了很多方法来操作字符串,功能相当丰富。必须进行全面的了解与学习,后面的代码处理才能更得心应手,编程水平走向新台阶的坚实基础。目前一共有45个方法,给大家分类整理,可以收藏查询使用。
1 | # 获取字所有的符串方法 |
一、大小写转换
01、capitalize()
描述:将字符串的第一个字母变成大写,其余字母变为小写。
语法:str.capitalize()
示例:
1 | "i Love python".capitalize() |
02、title()
描述:返回一个满足标题格式的字符串。即所有英文单词首字母大写,其余英文字母小写。
语法:str.title()
示例:
1 | "i am very love python".title() |
03、swapcase()
描述:将字符串str中的大小写字母同时进行互换。即将字符串str中的大写字母转换为小写字母,将小写字母转换为大写字母。
语法:str.swapcase()
示例:
1 | "I Am Love PYTHON".swapcase() |
04、lower()
描述:将字符串中的所有大写字母转换为小写字母。
语法:str.lower()
示例:
1 | "我爱pythoN Python!".lower() |
05、upper()
描述:将字符串中的所有小写字母转换为大写字母。
语法: str.upper()
示例:
1 | "i am very love python".upper() |
06、casefold()
描述:将字符串中的所有大写字母转换为小写字母。也可以将非英文 语言中的大写转换为小写。
注意 :lower()函数和casefold()函数的区别:lower() 方法只对ASCII编码,即‘A-Z’有效,对于其它语言中把大写转换为小写的情况无效,只能用 casefold() 函数。
语法:str.casefold()
示例:
1 | "Groß - α".casefold()#德语 |
二、字符串填充
07、center()
描述:返回一个长度为width,两边用fillchar(单字符)填充的字符串,即字符串str居中,两边用fillchar填充。若字符串的长度大于width,则直接返回字符串str。
语法:str.center(width , “fillchar”)
- width —— 指定字符串长度。
- fillchar —— 要填充的单字符,默认为空格。
示例:
1 | 'shuai'.center(10) |
08、ljust()
描述:返回一个原字符串左对齐,并使用fillchar填充(默认为空格)至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
语法: str.ljust(width, fillchar) -> str 返回一个新的字符串
- width —— 指定字符串的输出长度。
- fillchar—— 将要填充的单字符,默认为空格。
示例:
1 | 'shuai'.ljust(10) |
09、rjust()
描述:返回一个原字符串右对齐,并使用fillchar填充(默认为空格)至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
语法: str.ljust(width, fillchar)
- width —— 指定字符串的输出长度。
- fillchar—— 将要填充的单字符,默认为空格。
示例:
1 | 'shuai'.rjust(10) |
10、zfill()
描述:返回指定长度的字符串,使原字符串右对齐,前面用0填充到指定字符串长度。
语法:str.zfill(width)
width —— 指定字符串的长度,但不能为空。若指定长度小于字符串长度,则直接输出原字符串。
示例:
1 | '12'.zfill(10) |
三、字符串编码
11、encode()
描述:以指定的编码格式编码字符串,默认编码为 ‘utf-8’。encode英文原意 编码。
语法:str.encode(encoding=’utf-8’, errors=’strict’)
- encoding 参数可选,即要使用的编码,默认编码为 ‘utf-8’。字符串编码常用类型有:utf-8,gb2312,cp936,gbk等。
- errors 参数可选,设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeEncodeError。 其它可能值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’以及通过 codecs.register_error() 注册其它的值。
示例:
1 | "我爱祖国".encode(encoding="utf8",errors="strict") |
12、decode()
描述:以 encoding 指定的编码格式解码字符串,默认编码为字符串编码。decode英文意思是 解码,
语法:str.decode(encoding=’utf-8’, errors=’strict’)
- encoding ——要使用的编码,如:utf-8,gb2312,cp936,gbk等。
- errors ——设置不同解码错误的处理方案。默认为 ‘strict’,意为编码错误引起一个 UnicodeDecodeError。 其它可能得值有 ‘ignore’, ‘replace’以及通过 codecs.register_error() 注册的1其它值。
示例:
1 | str1 = "我爱学习".encode(encoding="utf-8") |
四、字符串查找
13、find()
描述:查找字符串中指定的子字符串sub第一次出现的位置,可以规定字符串的索引查找范围。若无则返回 -1。
语法:str.find(sub,start,end) -> int 返回整数
参数:
- sub —要索引的子字符串。
- start —索引的起始位置。默认值为0。
- end —索引的结束位置。默认值为字符串长度len(str)。[start,end) 不包括end。
示例:
1 | #查找子字符串"o" |
14、rfind()
描述:查找字符串中指定的子字符串sub最后一次出现的位置,可以规定字符串的索引查找范围。若无则返回 -1。
语法:str.rfind(sub,start,end) -> int 返回整数
参数:
- sum —要索引的子字符串。
- start —索引的起始位置。默认值为0。
- end —索引的结束位置。默认值为字符串长度len(str)。[start,end) 不包括end。
注:rfind()函数用法与find()函数相似,rfind()函数返回指定子字符串最后一次出现的位置,find()函数返回指定子字符串第一次出现的位置。
示例:
1 | #查找子字符串"o" |
15、index()
描述:查找字符串中第一次出现的子字符串的位置,可以规定字符串的索引查找范围[star,end)。若无则会报错。
语法:str.index(sub, start, end) -> int 返回整数
参数:
- sub —— 查找的子字符串。
- start —— 索引的起始位置,默认为0。
- end —— 索引的结束位置,默认为字符串的长度。
示例:
1 | "I love python".index("o") #默认索引整个字符串 |
16、rindex()
描述: rindex() 方法返回子字符串最后一次出现在字符串中的索引位置,该方法与 rfind() 方法一样,可以规定字符串的索引查找范围[star,end),只不过如果子字符串不在字符串中会报一个异常。
语法:str.rindex(sub, start, end) -> int 返回整数。
参数:
- sub —— 查找的子字符串。
- start —— 索引的起始位置,默认为0。
- end —— 索引的结束位置,默认为字符串的长度。
示例:
1 | "I love python".rindex('o') |
五、字符串格式化
17、format()
描述:Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。使用format()来格式化字符串时,使用在字符串中使用{}作为占位符,占位符的内容将引用format()中的参数进行替换。可以是位置参数、命名参数或者兼而有之。
format 函数可以接受不限个参数,位置可以不按顺序。
语法:format(value, format_spec)
参数:
示例:
1 | # 位置参数 |
18、format_map()
描述:返回字符串的格式化版本。在Python3中使用format和format_map方法都可以进行字符串格式化,但format是一种所有情况都能使用的格式化方法,format_map仅使用于字符串格式中可变数据参数来源于字典等映射关系数据时才可以使用。
语法:str.format_map(mapping) -> str 返回字符串
参数:mapping 是一个字典对象
示例:
1 | People = {"name": "john", "age": 33} |
六、解决判断问题
19、endswith()
描述:判断字符串是否以指定字符或子字符串结尾。
语法:str.endswith(“suffix”, start, end) 或str[start,end].endswith(“suffix”) 用于判断字符串中某段字符串是否以指定字符或子字符串结尾。—> bool 返回值为布尔类型(True,False)
参数:
- suffix — 后缀,可以是单个字符,也可以是字符串,还可以是元组(”suffix”中的引号要省略,常用于判断文件类型)。
- start —索引字符串的起始位置。
- end — 索引字符串的结束位置。
注意:空字符的情况。返回值通常为True
示例:
1 | "I love python".endswith('n') |
20、startswith()
描述:判断字符串是否以指定字符或子字符串开头。
语法:str.endswith(“suffix”, start, end) 或
str[start,end].endswith(“suffix”) 用于判断字符串中某段字符串是否以指定字符或子字符串结尾。
—> bool 返回值为布尔类型(True,False)
参数:
- suffix — 后缀,可以是单个字符,也可以是字符串,还可以是元组(”suffix”中的引号要省略)。
- start —索引字符串的起始位置。
- end — 索引字符串的结束位置。
注意:空字符的情况。返回值通常也为True
示例:
1 | "hello,i love python".startswith("h") |
21、isalnum()
描述:检测字符串是否由字母和数字组成。str中至少有一个字符且所有字符都是字母或数字则返回 True,否则返回 False
语法:str.isalnum() -> bool 返回值为布尔类型(True,False)
参数:
示例:
1 | "seven-11".isalnum() |
22、isalpha()
描述:检测字符串是否只由字母组成。字符串中至少有一个字符且所有字符都是字母则返回 True,否则返回 False。
语法:str.isalpha() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | "I love python".isalpha()#存在空格返回False |
23、isdecimal()
描述:检查字符串是否只包含十进制字符。字符串中若只包含十进制字符返回True,否则返回False。该方法只存在于unicode对象中。注意:定义一个十进制字符串,只需要在字符串前添加前缀 ‘u’ 即可。
语法: str.isdecimal() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | "123456".isdecimal() |
24、isdigit()
描述:检测字符串是否只由数字组成.字符串中至少有一个字符且所有字符都是数字则返回 True,否则返回 False。
语法:str.isdigit() -> bool 返回值为布尔类型(True,False)
参数:无
注:能判断“①”,不能判断中文数字。但 isnumeric() 函数可以。
示例:
1 | "python".isdigit() #全为字母 |
25、isidentifier()
描述:判断str是否是有效的标识符。str为符合命名规则的变量,保留标识符则返回True,否者返回False。
语法:str.isidentifier() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | "123".isidentifier() #变量名为123 |
26、islower()
描述:检测字符串中的字母是否全由小写字母组成。(字符串中可包含非字母字符)字符串中包含至少一个区分大小写的字符,且所有这些区分大小写的字符都是小写,则返回 True,否则返回 False。
语法:str.islower() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | #字符串中的字母全为小写 |
27、isupper()
描述:检测字符串中的字母是否全由大写字母组成。(字符串中可包含非字母字符)。字符串中包含至少一个区分大小写的字符,且所有这些区分大小写的字符都是大写,则返回 True,否则返回 False。
语法:str.isupper() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | "I LOVE PYTHON".isupper() #全为大写字母 |
28、inumeric()
描述:测字符串是否只由数字组成。这种方法是只适用于unicode对象。字符串中只包含数字字符,则返回 True,否则返回 False。
语法:str.isnumeric() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | u"123456".isnumeric() #全为数字 |
29、isprintable()
描述:判断字符串中是否有打印后不可见的内容。如:\n \t 等字符。若字符串中不存在\n \t 等不可见的内容,则返回True,否者返回False。
语法: str.isprintable() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | #不存在用print()打印后不可见的内容 |
30、isspace()
描述: 检测字符串是否只由空格组成。若字符串中只包含空格,则返回 True,否则返回 False。
语法:str.isspace() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | str1 = " "#空格 |
31、istitle()
描述:检测判断字符串中所有单词的首字母是否为大写,且其它字母是否为小写,字符串中可以存在其它非字母的字符。若字符串中所有单词的首字母为大写,且其它字母为小写,则返回 True,否则返回 False.
语法:str.istitle() -> bool 返回值为布尔类型(True,False)
参数:无
示例:
1 | "I Love Python".istitle() #各单词的首字母均为大写,其余字母为小写 |
七、字符串修剪
32、strip()
描述:该函数的作用是去除字符串开头和结尾处指定的字符,不会去除字符串中间对应的字符
语法:str.strip(chars)
参数:chars – 要去除的字符 默认为空格或换行符。
示例:
1 | #默认参数,去除了空格,\n \t \r字符,且未除去字符串中间相应的字符 |
33、lstrip()
描述:lstrip() 方法用于截掉字符串左边的空格或指定字符。
语法:str.lstrip(chars)
参数:chars–要去除的字符 默认为空格或换行符。
示例:
1 | #去除左边指定字符 |
34、 rstrip()
描述: 删除 str 字符串末尾的指定字符(默认为空格)
语法:str.rstrip(chars)
参数:chars –要去除的字符 默认为空格或换行符。
示例:
1 | #去除左边指定字符 |
八、字符串加密解密
35、maketrans()
描述:制作翻译表,删除表,常与translate()函数连用。 即:返回用于str.translate方法翻译的转换表。
语法:str.maketrans(intab, outtab,delchars)
参数:
- intab – 字符串中要替代的字符组成的字符串。
- outtab – 相应的映射字符的字符串。
- delchars – 可选参数,表示要删除的字符组成的字符串。
示例:
1 | str.maketrans() 生成一个字符一对一映射的table,然后使用 translate(table) 对字符串S中的每个字符进行映射。 |
36、translate()
描述:过滤(删除),翻译字符串。即根据maketrans()函数给出的字符映射转换表来转换字符串中的字符。
注:translate()函数是先过滤(删除),再根据maketrans()函数返回的转换表来翻译。
语法:str.translate(table)
参数:
示例:
1 | 见上述案例 |
九、分割字符串
37、partition()
描述:根据指定的分隔符(sep)将字符串进行分割。从字符串左边开始索引分隔符sep,索引到则停止索引。
语法: str.partition(sep)
参数:sep —— 指定的分隔符。
返回值:(head, sep, tail) 返回一个三元元组,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,则返回一个三元元组,第一个为分隔符sep左边的子字符串,第二个为分隔符sep本身,第三个为分隔符sep右边的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一个三元元组,第一个元素为字符串本身,第二第三个元素为空字符串
示例:
1 | string = 'https://www.google.com.hk/' |
38、rpartition()
描述:根据指定的分隔符(sep)将字符串进行分割。从字符串右边(末尾)开始索引分隔符sep,索引到则停止索引。
语法: str.rpartition(sep)
参数:sep —— 指定的分隔符。
返回值: (head, sep, tail) 返回一个三元元组,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,则返回一个三元元组,第一个为分隔符sep左边的子字符串,第二个为分隔符sep本身,第三个为分隔符sep右边的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一个三元元组,第一个元素为字符串本身,第二第三个元素为空字符串。
注:rpartition()函数与partition()函数用法相似,rpartition()函数从右边(末尾)开始索引,partition()函数从左边开始索引。
示例:
1 | string = 'https://www.google.com.hk/' |
39、split()
描述:拆分字符串。通过指定分隔符sep对字符串进行分割,并返回分割后的字符串列表。
语法: str.split(sep=None, maxsplit=-1) [n]
- sep —— 分隔符,默认为空格,但不能为空即(“)。
- maxsplit —— 最大分割参数,默认参数为-1。
- [n] —— 返回列表中下标为n的元素。列表索引的用法。
示例:
1 | #默认空格分割 |
40、rsplit()
描述:拆分字符串。通过指定分隔符sep对字符串进行分割,并返回分割后的字符串列表,类似于split()函数,只不过 rsplit()函数是从字符串右边(末尾)开始分割。
语法:str.rsplit(sep=None, maxsplit=-1) -> list of strings 返回 字符串列表 或str.rsplit(sep=None, maxsplit=-1)[n]
参数:
- sep —— 分隔符,默认为空格,但不能为空即(“)。
- maxsplit —— 最大分割参数,默认参数为-1。
- [n] —— 返回列表中下标为n的元素。列表索引的用法。
示例:
1 | # 只搜索到一个sep时,两者结果相同 |
41、splitlines()
描述:按照(‘\n’, ‘\r’, \r\n’等)分隔,返回一个包含各行作为元素的列表,默认不包含换行符。\n 换行符 \r 回车符 \r\n 回车+换行
语法:S.splitlines([keepends=False])
参数:keepends – 在输出结果里是否去掉行界符(‘\r’, ‘\r\n’, \n’等),默认为 False,不包含行界符,如果为 True,则保留行界符。
示例:
1 | # 字符串以换行符为分隔符拆分,去掉换行符 |
42、join()
描述:将iterable变量的每一个元素后增加一个str字符串。
语法: sep.join(iterable)
- sep——分隔符。可以为空。
- iterable—— 要连接的变量 ,可以是 字符串,元组,字典,列表等。
示例:
1 | python中经常看到join,特别是在自然语言处理的时候,分词什么的,但是很多初学者不理解其中的意思,这里进行详细的介绍,希望对大家能有帮助。 |
九、字符串替换
43、replace()函数
描述:把str.中的 old 替换成 new,如果 count 指定,则替换不超过 count次.。
语法:str.replace(old, new, count)
参数:
- old —— 将被替换的子字符串。
- new —— 新子字符串,用于替换old子字符串。
- count —— 替换的次数,默认全部替换。
案例:
1 | s = "我的小伙伴张三" |
44、expandtabs()
描述:将字符串S中的 \t 替换为一定数量的空格。默认N=8。
语法: str.expandtabs(tabsize=8)
tabsize 的默认值为8。tabsize值为0到7等效于tabsize=8。tabsize每增加1,原字符串中“\t”的空间会多加一个空格。
示例:
1 | '01\t012\t0123\t01234'.expandtabs(4) |
十、统计字符次数
45、count()
描述:统计字符串里某个字符出现的次数。可以选择字符串索引的起始位置和结束位置。
语法:str.count(“char”, start,end) 或 str.count(“char”)
- str —— 为要统计的字符(可以是单字符,也可以是多字符)。
- star —— 为索引字符串的起始位置,默认参数为0。
- end —— 为索引字符串的结束位置,默认参数为字符串长度即len(str)。
示例:
1 | 'abc--qo-ab'.count('ab') |