目录
前言:
1.字符串的连接
join() 函数
2.字符串的删除&取代
replace()函数
3.字符串的修改&切割
(1)strip() 函数
(2)lstrip()函数 和 rstrip()函数
(3)split()函数-->切割字符串
4.字符串的查询与统计
(1)find() 函数
(2)index() 函数
find()函数与index()函数的区别
(3)endswith() 函数
5.字符串的统计
count()函数
6.字符串的类型判断
(1)isdigit() 函数
(2)isalpha()函数
(3)大小写判断
7.字符大小写转换
(1)upper()函数,小写转大写
(2)lower()函数,大写转小写
(3)title()函数,标题化字符串
前言:
前面讲了有序序列,字符串也是有序序列的一种,但是跟列表不同,字符串是不可以修改的,也就是说,已经定义了一个字符串,但是不可以修改或者删除其中的一个字符,否则会报错。但是这一期,我却讲字符串的连接,删除,修改,实际上并不是在原来的基础上修改,而是创建了一个新的修改了以后的字符串。
序列的可变性与不可变性:
可变:该类型的值进行修改的话 该类型的内存地址不会发生改变
不可变:该类型的值进行修改的话 该类型的内存地址也会跟着修
Python对比C语言:
//在c语言中,我们可以去直接去修改字符串里面的单个字符,是不会报错的
#include<stdio.h>
int main()
{
char a[20] = { "hello word" };
a[0] = 'q';
a[1] = 'o';
puts(a);
}
#但是如果在Python中这样子去修改的话,是会报错的,
#因为字符串里面的字符地址都跟着一起修改了,所以修改过后已经不是一个连续内存的字符串了
st='hello word'
st[0]='p'
st[1]='z'
print(st)
对此,在Python中,如果想要修改一个字符串的话,那就得创建一个新的字符串变量或者把原来的字符串内容覆盖掉来储存修改好了的字符串,从而实现内存的连续性,才能满足字符串的形式
1.字符串的连接
前面我们学了Python相关知识都知道,Python字符串是可以通过+号和*号进行修改的
a='123'
b='(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤'
print(a+b)
#输出结果:123(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤
这里也仅仅只是实现了字符串一个拼接而已,但是没有去修改到字符串里面的元素。如果要修改元素就必须用到函数。
join() 函数
格式:
'sep'.join(seq)
sep:表示分隔符,可以是但个字符,也可以是字符串
seq:是表示要被处理的字符串
详细内容可看下文
Python中的join函数 - 腾讯云开发者社区-腾讯云
示例:
st='hello word'
s='-'.join(st)
print(s)
这个函数的用法是非常广泛的,不单单可以用于字符串,基本上可以用于Python中的所有序列。
2.字符串的删除&取代
上面我提出了在Python中字符串修改的问题,这里我会通过一个函数可以直接对字符串里面的单个字符进行操作
replace()函数
格式:
字符串名.replace('要修改的值','替换值',替换的次数)
备注:如果想要删除就设替换值为空就可以了,例如:
st='123hao'
s=st.replace('h','')
注意事项:如果没有去设置替换的次数的话,这个函数会默认把所以这个要修改的值全部替换!!
示例1:
str1 = '大家好我是地表最强强强强强的国服韩信'
re=str1.replace('强','吊')
print(re)
print(str1)
这里可以看出,如果我没有去备注替换的次数,那么会把全部的 强 替换为 吊 ,而且是吧替换后的字符串放到re中,而原来的str1是没有变化的。
示例2:
str1 = '大家好我是地表最强强强强强的国服韩信'
str1=str1.replace('强','吊',2)
print(str1)
#输出结果:大家好我是地表最吊吊强强强的国服韩信
这里我是用覆盖的方法,把原来的str1进行覆盖,而且也备注了替换次数为2,所以会把最前面的两个 强 字给替换掉,应该很好理解了。
3.字符串的修改&切割
(1)strip() 函数
格式:
字符串名.strip()
作用:删除掉字符串左右全部空格,但是中间的不会被删除
a=' wad asd '
b=a.strip()
print(b)
#输出结果:wad asd
(2)lstrip()函数 和 rstrip()函数
lstrip()函数
格式:
字符串名.lstrip()
作用:删除掉字符串左边的全部空格
rstrip()函数
格式:
字符串名.rstrip()
作用:删除掉字符串右边全部空格
示例:
a=' 无论在哪里 我都会想你 '
b=a.lstrip()
c=a.rstrip()
print(b)
print(c)
(3)split()函数-->切割字符串
格式:
字符串名.split('切割字符','分割次数')
作用:一个字符串可以按照指定的分割符切成多个子串,以列表形式返回
注意事项:切割之后的数据类型是列表类型,如果没有任何参数的话,那么分割字符是默认为空格,tab制表符,换行符等符号作为条件;如果没有设置分割次数的话,那么就会把全部满足条件的分割符全部进行分割
示例1:
#没有任何参数
str1='再看一眼 多看一眼 就会爆炸'
str2='再看一眼\n多看一眼\n就会爆炸'
str3='再看一眼\t多看一眼\t就会爆炸'
a=str1.split()
b=str2.split()
c=str3.split()
print(a)
print(b)
print(c)
结果自然也是一样的了
示例2:
#split('-') 有自定义的分割符
str1='再看一眼-多看一眼-就会爆炸'
str2='再看一眼\n多看一眼\n就会爆炸'
str3='再看一眼*多看一眼*就会爆炸'
a=str1.split('-')
b=str2.split('-')
c=str3.split('-')
print(a)
print(b)
print(c)
示例3:
#有自定义的分割符,还有分割次数
str1='再看一眼-多看一眼-就会爆炸'
str2='再看一眼\n多看一眼\n就会爆炸'
str3='再看一眼*多看一眼*就会爆炸'
a=str1.split('*',1)
b=str2.split('*',1)
c=str3.split('*',1)
print(a)
print(b)
print(c)
4.字符串的查询与统计
(1)find() 函数
格式:
字符串名.find('要查询的字符', 起始值 , 终点值)
作用:该方法得到的结果尾查询字符对应的下标,可以检查是否包含子串
注意:如果没有去标注起始值跟终点值,那么系统就会默认查询范围为整个字符串,如果要查询的范围内没有这个字符那么结果不会报错,而是返回-1,如果找到了就会返回查询字符第一个字符所在的下标位置
st='要去学校了,QAQ'
s=st.find('学校了')
print(s)
#输出结果:2
st='要去学校了,QAQ'
s=st.find('去',2,5)
print(s)
#输出结果:-1
这个函数的终点值是可以超过这个字符串的最大下标的,不会报错,系统会把超过的部分忽略掉,默认终点为这个字符串最后一个字符
(2)index() 函数
格式:
列表名.index(数据,起始值,终点值)
返回:如果找到这个字符串的子串就会返回子串第一个字符在这个字符串所在的下标,如果找不到就报错,这个函数跟find()函数一样也是有范围查询的功能
st='要去学校了,QAQ'
s=st.index('学校w')
print(s)
因为这个子串在原字符串st中是没有的,所以会报错同样终点值也是可以大于字符串的长度的,不会报错,系统默终点为最后一个字符
find()函数与index()函数的区别
1.这两个函数的用法可以说是几乎一模一样,但是区别也是有的:index()函数如果没有找到这个字符就会报错,而find()函数如果没有找到就会返回-1,不会报错
2.还有就是index()函数的使用范围更加光,基本上是可以用于全部序列的,而find()函数一般只能在字符串(str)类型中使用,而列表是不可以用find()函数的
(3)endswith() 函数
格式:
字符串名.endswith('指定字符')
作用:该方法是判断字符串末尾的字符是否与我们指定的字符相同
返回:如果找到就返回布尔变量True,反正返回False(没找到不会报错)
st='国服韩信在此,谁敢放肆'
print(st.endswith('肆'))
print(st.endswith('敢放肆'))
print(st.endswith('国服韩信在此,谁敢放肆'))
print(st.endswith('国服韩信'))
这个函数是从字符串末尾开始找的,实际上就是倒着找
5.字符串的统计
count()函数
格式:
字符串名.count(要统计的字符)
返回值:统计这个字符在字符串出现的次数,如果不存在这个字符就返回0
这个函数不仅仅是可以作用于字符串,也可以作用于列表等序列
st='你爱玩,我爱你,你是秉冰城甜蜜蜜'
print(st.count('爱'),end=' ')
print(st.count('力'))
#输出结果:2 0
这个函数也是之前在列表那一块讲过了,就不多说了
6.字符串的类型判断
(1)isdigit() 函数
格式:
字符串名.isdigit()
作用:判断这个字符串是否我纯数字(包括整数和浮点数)
返回:返回值为布尔类型(bool),如果是的话就返回True,否则就返回False
st='你爱玩,我爱你,你是冰城甜蜜蜜'
a='12345'
b='3.1415926'
print(st.isdigit())
print(a.isdigit())
print(b.isdigit())
#输出结果:False
# True
# False
(2)isalpha()函数
格式:
字符串名.isalpha()
作用:判断这个字符串是不是纯字符(英文和中文,特殊符号如+-*或者空格等等这些不算)
返回:返回值为布尔类型(bool),如果是的话就返回True,否则就返回False
st='你爱玩我爱你你是秉冰城甜蜜蜜'
a='12adsa'
b='localhost'
c='只因你太beautiful'
d='beautiful+you'
print(st.isalpha())
print(a.isalpha())
print(b.isalpha())
print(c.isalpha())
print(d.isalpha())
#输出结果:
True
False
True
True
False
(3)大小写判断
跟isdigit()、isalpha()函数一样,也有isupper()、islower() 函数可以用来判断字符串的大小写,返回也是布尔类型,这里我就不说了,用法也是跟上面的差不多的
7.字符大小写转换
(1)upper()函数,小写转大写
格式:
字符串名.upper()
作用:把字符串里面的全部字符转为大写(如果原来本身就是大写的话,转换了还是大写;当然了,中文又不是字母,转不了的)
a='awD'
q=a.upper()
print(q)
#输出结果:AWD
(2)lower()函数,大写转小写
格式:
字符串名.lower()
作用:把字符串里面全部字符转换为小写
str1 = 'ASDF'
print(str1.lower())
#输出结果:asdf
用法也是很简单的,就不多说了
(3)title()函数,标题化字符串
格式:
字符串名.title()
作用:返回’标题化‘的字符串,就是单词的开头为大写,其余为小写
st='play games'
print(st.title())
#输出结果:Play Games
用法也是非常简单的,就是把每个单词的开头字母变成大写
好了,这一期就到这里了,喜欢的话给个关注吧~~~