上一篇文章说了Python字符串下标和切片的概念,这篇文章来说说Python中对字符串的常用操作。
对字符串的操作主要分为三大类:查找、修改和判断。
所谓字符串查找方法,即是查找一个子串在字符串中的位置或出现的次数。
find()
方法find()
方法是,检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始位置的下标,否则则返回-1
。
1)语法:
字符串序列.find(子串, 开始查找的位置下标, 结束查找的位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2)快速体验:
mystr = "Life is short,you need Python。" print(mystr.find('short')) # 8 # 在字符串标记的范围内查找 print(mystr.find('o', 13, 25)) # 15 print(mystr.find('hello')) # -1
index()
方法index()
方法检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始的位置下标,否则则报异常。
index()
方法获取指定元素在列表中的第一次出现时索引,如果一个字符串内出现多处子串存在,返回第一个子串开始的位置下标。
1)语法:
字符串序列.index(子串, 开始查找的位置下标, 结束查找的位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2)快速体验:
mystr = "Life is short,you need Python。" print(mystr.find('short')) # 8 # 在字符串标记的范围内查找 # 可以只写开始位置 print(mystr.find('o', 13, 25)) # 15 # 报错ValueError: substring not found print(mystr.find('hello'))
rfind()
和rindex()
方法rfind()
方法: 和find()
方法功能相同,但查找方向为右侧开始。rindex()
方法:和index()
方法功能相同,但查找方向为右侧开始。注意:但是下标还是从左到右,从0开始算起,只是查找开始的方向不同。
count()
方法count()
方法:返回某个子串在字符串中出现的次数。
1)语法:
字符串序列.count(子串, 开始位置下标, 结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2)快速体验:
mystr = "Life is short,you need Python。" print(mystr.count('o')) # 3 # 在字符串标记的范围内查找 # 可以只写开始位置 print(mystr.count('o', 13, 25)) # 1 print(mystr.count('hello')) # 0
所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。(字符串修改的方法很多,我们只讲解一下最常用的。)
replace()
方法replace()
:替换
1)语法:
字符串序列.replace(旧子串, 新子串, 替换次数)
注意:替换次数如果查出子串出现次数,则替换次数为该子串出现次数。
2)快速体验:
mystr = "hello and String and python and world" # 1.把字符串中的and全部换成he,查出几次,替换几次。 # 结果:hello he String he python he world new_str = mystr.replace('and', 'he') print(new_str) # 2。替换次数如果超出子串出现的次数,表示替换所有子串 # 结果:hello he String he python he world new_str = mystr.replace('and', 'he', 10) print(new_str) # 3、查出的子串中,只替换前两个 # 结果:hello he String he Python and world new_str = mystr.replace('and', 'he', 2) print(new_str)
3)注意(重要)
调用了replace()
方法后,发现原有字符串的数据并没有做到修改,修改后的数据是replace()
方法的返回值,说明字符串是不可变数据类型。
同时也说明:说明replace()
方法有返回值,返回值是修改后的字符串。
应该所有关于字符串修改的函数,都有返回值,且返回修改后的字符串。
总结:数据按照是否能直接修改分为可变类型数据和不可变类型数据两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。
split()
方法split()
方法:按照指定字符分割字符串。返回一个列表,并丢失字符串中包含的分割字符。
1)语法:
字符串序列.split(分割字符, num)
注意:
num
表示的是分割字符出现的次数,即将来返回数据个数为num+1
个。
2)快速体验:
mystr = "hello and String and python and world" # 1.以and为分割符,分割字符串,出现的分割全部分割。 # 结果:['hello ', ' String ', ' python ', ' world'] new_str = mystr.split('and') print(new_str) # 2.只把前两次出现的分割符,进行字符串的分割 # 结果:['hello ', ' String ', ' python and world'] new_str = mystr.split('and', 2) print(new_str)
注意:如果分割字符是原有字符串中的子串,分割后则丢失该子串。
join()
方法join()
方法:用一个字符或子串合并字符串,即将多个字符串合并为一个新的字符串。
1)语法:
字符或子串.join(多字符串组成的序列)
2)快速体验:
# 合并列表里面的字符串为一个大的字符串 # 结果:aa...bb...cc mylist = ['aa', 'bb', 'cc'] print('...'.join(mylist)) # 结果:hello world hello python list1 = ['hello', 'world', 'hello', 'python'] print(' '.join(list1))
capitalize()
方法capitalize()
方法:将字符串第一个字符转换成大写。
代码演示如下:
""" 下面结果可以看到两点 1.字符串的第一个字符变成大写了。 2.除了首字符外,其他字符如有大写,都变成小写。 """ # 结果:Life is short,you need python。 mystr = "life is short,you need Python。" new_str = mystr.capitalize() print(new_str)
注意:
capitalize()
方法转换后,只字符串第一个字符大写,其他的字符全都小写。
title()
方法title()
方法:将字符串每个单词首字母转换成大写。
代码演示如下:
# 将字符串中的每个单词的首字母都转换成大写。 # 如果单词的首字母原本就是大写,保持不变。 # 结果:Life Is Short,You Need Python。 mystr = "life is short,you need Python。" new_str = mystr.title() print(new_str)
lower()
方法lower()
方法:将字符串中大写转小写。
代码演示如下:
# 把字符串变成全小写。 # 结果:life is short,you need python。 mystr = "life is short,You Need Python。" new_str = mystr.lower() print(new_str)
upper()
方法upper()
方法:将字符串中小写转大写。
代码演示如下:
# 把字符串变成全大写。 # 结果:LIFE IS SHORT,YOU NEED PYTHON。 mystr = "life is short,You Need Python。" new_str = mystr.upper() print(new_str)
lstrip()
方法lstrip()
方法:删除字符串左侧空白字符。
代码演示如下:
# 结果:"Life is short,you need Python。 " mystr = " Life is short,you need Python。 " new_str = mystr.lstrip() print(new_str)
rstrip()
方法rstrip()
方法:删除字符串右侧空白字符。
代码演示如下:
# 结果:" Life is short,you need Python。" mystr = " Life is short,you need Python。 " new_str = mystr.rstrip() print(new_str)
strip()
方法strip()
方法:删除字符串两侧空白字符。
代码演示如下:
# 结果:"Life is short,you need Python。" mystr = " Life is short,you need Python。 " new_str = mystr.strip() print(new_str)
ljust()
方法ljust()
方法:返回一个原字符串左对齐的字符串,并使用指定字符(默认空格)填充至对应长度的新字符串。
1)语法:
字符串序列.ljust(长度, 填充字符)
2)示例:
# 输出结果:Pyhton.... mystr = "Pyhton" new_str = mystr.ljust(10 , ".") print(new_str)
rjust()
方法rjust()
方法:返回一个原字符串右对齐的字符串,并使用指定字符(默认空格)填充至对应长度的新字符串。
语法和ljust()
方法相同。
代码演示如下:
# 字符串序列.rjust(长度, 填充字符) # 输出结果:....Pyhton mystr = "Pyhton" new_str = mystr.rjust(10 , ".") print(new_str)
center()
方法center()
方法:返回一个原字符串居中对齐的字符串,并使用指定字符(默认空格)填充至对应长度的新字符串。
语法和ljust()
方法相同。
代码演示如下:
# 字符串序列.center(长度, 填充字符) # 输出结果:..Pyhton.. mystr = "Pyhton" new_str = mystr.center(10 , ".") print(new_str) """ 有的时候可能不是绝对居中, 补充字符数可能是奇数, 调整长度即可让补充字符数变成偶数, 来达到绝对居中效果。 """
所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
startswith()
方法startswith()
方法:检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
1)语法:
字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
开始位置下标和结束位置下标可以不写,不写则是全字符串内检查。
2)快速体验:
mystr = "Life is short,you need Python" # 结果:True new_str = mystr.startswith('Li') print(new_str) # 结果False mystr = "Life is short,you need Python" new_str = mystr.startswith('Li', 3, 15) print(new_str)
endswith()
方法endswith()
方法:检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
1)语法:
字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
开始位置下标和结束位置下标可以不写,不写则是全字符串内检查。
2)快速体验:
mystr = "Life is short,you need Python" # 结果:False new_str = mystr.endswith('thons') print(new_str) # 结果:False new_str = mystr.endswith('thon', 5, 20) print(new_str)
isalpha()
方法isalpha()
方法:如果字符串至少有一个字符,并且所有字符都是字母则返回 True, 否则返回 False。
代码演示如下:
mystr = "Life is short,you need Python" mystr1 = 'hello' mystr2 = 'hello12345' # 结果:False 因为有空格 new_str = mystr.isalpha() print(new_str) # 结果:True new_str = mystr1.isalpha() print(new_str) # 结果:False 因为有数字 new_str = mystr2.isalpha() print(new_str)
isdigit()
方法isdigit()
方法:如果字符串只包含数字则返回 True,否则返回 False。
代码演示如下:
mystr = "12345 12345" mystr1 = 'aaa12345' mystr2 = '12345' # 结果: False 因为有空格 new_str = mystr.isdigit() print(new_str) # 结果:False 因为有字母 new_str = mystr1.isdigit() print(new_str) # 结果:True new_str = mystr2.isdigit() print(new_str)
isalnum()
方法isalnum()
方法:如果字符串至少有一个字符,并且所有字符都是字母或数字或者字母和数字的组合,则返回 True,否则返回False。
代码演示如下:
mystr = "Life is short,you need Python" mystr1 = 'aaa12345' mystr2 = '12345-' # 结果:False 因为有空格 new_str = mystr.isalnum() print(new_str) # 结果:True new_str = mystr1.isalnum() print(new_str) # 结果:False 只能是数字或者字母,其他字符都不行 new_str = mystr1.isalnum() print(new_str)
isspace()
方法isspace()
方法:如果字符串中只包含空白,则返回True,否则返回False。
代码演示如下:
mystr = "Life is short,you need Python" mystr1 = ' ' # 结果:False new_str = mystr.isspace() print(new_str) # 结果:True new_str = mystr1.isspace() print(new_str)
这里简单的说一说方法和函数,在Python3中,对方法和函数有明确的规定:
function
:A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.
function
)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。method
:A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).
对象.方法()
的形式调用,如xxx.print()
方法实际上就是和对象关系紧密的函数。print()
。(就先这样理解,以后学习到函数的时候在详细说明,这和Java还是有区别的。)