一.字符串的相关操作
(1)字符串的拼接
(2)字符串的重复
(3)字符串跨行拼接
(4)字符串的索引
(5)字符串的切片:
语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值]
<1>[开始索引:] 从开始索引截取到字符串的最后
<2>[:结束索引] 从开头截取到结束索引之前(结束索引-1)
<3>[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
<4>[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
<5>[:]或[::] 截取所有字符串
(1)字符串的拼接 +
1 strvar = 'a' + 'b' 2 strvar +='c' 3 print(strvar)
(2)字符串的重复 *
1 strvar = 'abc' * 3 2 print(strvar)
(3)字符串跨行拼接
1 strvar = 'dlawjdla' 2 '多余的几行放在第二行进行显示' 3 print(strvar)
(4)字符串的索引
1 # 正向索引: 012 2 strvar = 'abc' 3 # 逆向索引 -3-2-1 4 res = strvar[2]
(5)字符串的切片:(切片 <=> 截取)
<1>[开始索引:] 从开始索引截取到字符串的最后
1 strvar = "国安,国安,北京国安" 2 res = strvar[6:] 3 print(res)
<2>[:结束索引] 从开头截取到结束索引之前(结束索引-1)
1 strvar = "国安,国安,北京国安" 2 res = strvar[:5] 3 print(res)
<3>[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
1 strvar = "国安,国安,北京国安" 2 res = strvar[3:5] 3 print(res)
<4>[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
1 strvar = "国安,国安,北京国安" 2 #正序 3 res = strvar[::2]# 0 2 4 6 8 10 12 ... 4 print(res) 5 #倒序 6 res = strvar[::-1]# -1 -2 -3 -4 -5 -6.... 7 print(res)
<5>[:]或[::] 截取所有字符串
1 strvar = "国安,国安,北京国安" 2 res = strvar[:] 3 res = strvar[::] 4 print(res)
二.字符串的相关函数
(1)capitalize 字符串首字母大写
1 strvar = 'abc'
2 res = strvar.capitalize()
3 print(res)
(2)title 每个单词的首字母大写
1 strvar = 'abc bad,abd,ldajlw,iqow'
2 res = strvar.title()
3 print(res)
(3)upper 将所有字母变成大写
1 strvar = 'ANDldjaldlw,ldDD'
2 res = strvar.upper()
3 print(res)
(4)lower 将所有字母变成小写
1 strvar = 'ADLAJD,dwajdl,ldajdlkDD'
2 res = strvar.lower()
3 print(res)
(5)swapcase 大小写互换
1 strvar = 'ADCKdlaj,dajADLJA'
2 res = strvar.swapcase()
3 print(res)
(6)len 计算字符串的长度
1 strvar ='dawdl'
2 res = len(strvar)
3 print(res)
(7)count 统计字符串中某个元素的数量
strvar = 'aaldjladaddjlk'
res = strvar.count('a')
print(res)
(8)find 查找某个字符串第一次出现的索引位置 (推荐)
字符串.find("字符",开始索引,结束索引) 如果找不到直接返回-1
strvar = "oh Father this is my Favorate dog"
1 res = strvar.find("F")
2 res = strvar.find("F",4)
3 res = strvar.find("Fav",5,10) # 结束索引本身取不到,取到之前的那个值
4 print(res)
(9)index 与 find 功能相同 find找不到返回-1,index找不到数据直接报错
strvar = "oh Father this is my Favorate dog"
#res = strvar.index("Fav",5,10) error
(10)endswith 判断是否以某个字符或字符串结尾
1 strvar = "oh Father this is my Favorate dog"
2 res = strvar.endswith("dog")
3 res = strvar.endswith("rate",-12)
4 res = strvar.endswith("rate",-12,-4)
5 print(res)
(11)endswith 判断是否以某个字符或字符串结尾
1 strvar = "oh Father this is my Favorate dog"
2 res = strvar.endswith("dog")
3 res = strvar.endswith("rate",-12)
4 res = strvar.endswith("rate",-12,-4)
5 print(res)
(12)isupper 判断字符串是否都是大写字母
1 strvar = "ABCD"
2 res = strvar.isupper()
3 print(res)
(13)islower 判断字符串是否都是小写字母
strvar = "abcdd12345"
res = strvar.islower()
print(res)
(14)isdecimal 检测字符串是否以数字组成 必须是纯数字
1 strvar = "12354" #True
2 strvar = "12354.8979112"
3 res = strvar.isdecimal()
4 print(res)
(15)填充字符串
ljust 填充字符串,原字符居左 (默认填充空格)
1 strvar = "abc"
2 res = strvar.ljust(10)
3 print(res)
rjust 填充字符串,原字符居右 (默认填充空格)
1 strvar = "abc"
2 res = strvar.rjust(10,"&") #原字符串长度 + 填充字符长度 = 10 ,默认填充空格
3 print(res)
center 填充字符串,原字符居中 (默认填充空格)
1 strvar = "abc"
2 res = strvar.center(10,"#")
3 print(res)
(18)去掉字符串旁侧的空白符
strip 默认去掉首尾两边的空白符
1 strvar = "@@@@@ 周杰伦 @@@@@"
2 res = strvar.strip()
3 res = strvar.strip("@") # 指定去掉的符号
4 print(res)
rstrip 去掉右边某个字符
1 strvar = "@@@@@ 周杰伦 @@@@@"
2 res = strvar.rstrip("@")
3 print(res)
lstrip 去掉左边某个字符
1 strvar = "@@@@@ 周杰伦 @@@@@"
2 res = strvar.rstrip("@")
3 print(res)
重要!!!
(19)split 按某字符将字符串分割成列表(默认字符是空格)
1 strvar = "you can you up no can no bb"
2 lst = strvar.split()
3 print(lst) #['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
4 strvar = "you-can-you-up-no-can-no-bb"
5 lst = strvar.split("-") # 从左到右分隔 ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
6 lst = strvar.rsplit("-",2)# 从右到左分隔,(可以指定分隔的次数) ['you-can-you-up-no-can', 'no', 'bb']
7 print(lst)
(20)join 按某字符将列表拼接成字符串(容器类型都可)
lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
res = "".join(lst) #youcanyouupnocannobb
res = " ".join(lst) #you can you up no can no bb
res = "-".join(lst) #you-can-you-up-no-can-no-bb
print(res)
(21)replace 替换,把字符串的旧字符换成新字符
replace(要替换的字符,替换成什么,替换的次数)
1 strvar = "有没有,有没有,还有没有"
2 res = strvar.replace("有没有","真没有")#真没有,真没有,还真没有
3 res = strvar.replace("有没有","真没有",1)#真没有,有没有,还有没有
4 print(res)
三.字符串的格式化 format
传参方式
(1)顺序传参
1 strvar = '今天{}崩溃了,想{}'.format('我','睡觉')
2 print(strvar)#今天我崩溃了,想睡觉
(2)索引传参
1 strvar = '人生{1},我亦{0}'.format('是行人','如逆旅')
2 print(strvar)# 人生如逆旅,我亦是行人
(3)关键字传参
1 strvar = '{name}买了{num}个开塞露'.format(name='刘子豪',num='5')
2 print(strvar)#刘子豪买了5个开塞露
(4)容器类型数据(列表或元祖)传参
1 strvar = '如果{z[2]},我也不知道{x[2]}'.format(z=['a','b','有一天'],x=('a','b','写什么'))
2 print(strvar)#如果有一天,我也不知道写什么
(5)format当中,不能使用逆向下标,不识别
1 strvar = '如果{z[-2]},我也不知道{x[-1]}'.format(z=['a','b','有一天'],x=('a','b','写什么'))# error 不能使用逆向下标
(6)如果容器是字典,直接写键值,不需要加上引号
1 strvar = "{a[b]}差点给{b[y]}打死".format(a = {'b':1,'c':2},b={'x':3,'y':4})
2 print(strvar) #1差点给4打死
format的填充符号的使用( ^ > < )
^ 原字符串居中
> 原字符串居右
< 原字符串居左
例:
{who:*^10}
who : 关键字参数
* : 要填充的字符(默认填充空格)
^ : 原字符串居中
10 : 总长度 = 原字符串长度 + 填充字符长度
1 strvar = "{who:*^10}在{where:>>10},{do:!<10}".format(who="刘子豪",where="电影院",do="拉屎")
2 print(strvar) #***刘子豪****在>>>>>>>电影院,拉屎!!!!!!!!
format进制转换等特殊符号的使用( :d :f :s :, )
(1):d 整型占位符 (要求类型必须是整型)
1 strvar = "刘子豪昨天买了{:d}个开塞露".format(100) # 100.5error
2 print(strvar)#刘子豪昨天买了100个开塞露
2d 占用两位,不够两位拿空格来补,默认居右
strvar = "刘子豪昨天买了{:2d}个开塞露".format(3)
print(strvar)#刘子豪昨天买了 3个开塞露
< > ^ 调整对应的位置
1 strvar = "刘子豪昨天买了{:<2d}个花露水".format(3)#刘子豪昨天买了3 个开塞露
2 strvar = "刘子豪昨天买了{:^3d}个花露水".format(3)#刘子豪昨天买了 3 个开塞露
3 print(strvar)
(2):f 浮点型占位符 (要求类型必须是浮点型)
1 strvar = "我毕业时,找工作的薪资是{:f}".format(2.5)
2 print(strvar )#我毕业时,找工作的薪资是2.500000
:.2f 小数点保留2位
strvar = "我毕业时,找工作的薪资是{:.2f}".format(2.56789)
print(strvar)#我毕业时,找工作的薪资是2.57 (存在四舍五入)
(3):s 字符串占位符 (要求类型必须是浮点型)
1 strvar = "{:s}".format("今天天气不错,万里无云")
2 print(strvar)#今天天气不错,万里无云
(4):, 金钱占位符
1 strvar = "{:,}".format(123456789)
2 print(strvar)# 123,456,789 (每三位一个,)