day7:字符串的操作/方法&字符串的格式化format&列表的操作
字符串的相关操作
1.字符串的拼接
- 1 strvar = "vegeta"+"ble"
- 2 print(strvar) # vegetable
2.字符串的重复
1 strvar = “good“ * 3
3.字符串的跨行拼接 使用\
- 1 strvar = "abcdefghijklmnopqrst" \
- 2 "uvwxyz"
- 3 print(strvar) # abcdefghijklmnopqrstuvwxyz
4.字符串的索引
- 1 '''
- 2 正向索引 0123
- 3 strvar = "1234"
- 4 逆向索引 -4-3-2-1
- 5 '''
5.字符串的切片
注意: [开始索引:结束索引:间隔值]
res = strvar[::2] # 0 2 4 6 8….. 从开始截取到最后
res = strvar[::-1] # -1 -2 -3 -4 -5 -6….. 从结尾截取到最前
- 1 # [开始索引:] 从开始索引截取到字符串的最后
- 2 strvar="红橙黄绿青蓝紫"
- 3 res = strvar[4:]
- 4 print(res)
- 5
- 6 # [:结束索引] 从开头截取到结束索引之前(结束索引-1)
- 7 res = strvar[:5]
- 8 print(res)
- 9
- 10 # [开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
- 11 res = strvar[1:3]
- 12 print(res)
- 13
- 14 # [开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
- 15 # 正序
- 16 res = strvar[::2] # 0 2 4 6 8..... 从开始截取到最后
- 17 print(res)
- 18 # 倒序
- 19 res = strvar[::-1] # -1 -2 -3 -4 -5 -6.....
- 20 print(res)
- 21
- 22 # [:]或[::] 截取所有字符串
- 23 res1 = strvar[:]
- 24 res2 = strvar[::]
- 25 print(res1)
- 26 print(res2)
————————————————————————-
字符串的方法
常规:
- 1 # capicalize 字符串首字母大写
- 2 strvar ="what is your name"
- 3 res = strvar.capitalize()
- 4 print(res) # What is your name
- 5
- 6 # title 每个单词的首字母大写
- 7 strvar ="what is your name"
- 8 res = strvar.title()
- 9 print(res) # What Is Your Name
- 10
- 11 # upper 将所有字母变成大写
- 12 strvar ="what is your name"
- 13 res = strvar.upper()
- 14 print(res) # WHAT IS YOUR NAME
- 15
- 16 # lower 将所有字母变成小写
- 17 strvar = "HELLO KITTY"
- 18 res = strvar.lower()
- 19 print(res) # hello kitty
- 20
- 21 # swapcase 大小写互换
- 22 strvar = "AAAAbbbb"
- 23 res = strvar.lower()
- 24 print(res) # aaaaBBBB
- 25
- 26 # len 计算字符串的长度
- 27 strvar = "AAAAbbbb"
- 28 res = len(strvar)
- 29 print(res) # 8
- 30
- 31 # count 统计字符串中某个元素的数量
- 32 strvar = "AAAAbbbb"
- 33 res = strvar.count("A")
- 34 print(res) # 4
- 35
- 36 # find 查找某个字符串第一次出现的索引位置(推荐使用)
- 37 '''字符串.find("字符",开始索引,结束索引) 如果找不到直接返回-1'''
- 38 strvar = "abcdefabc"
- 39 res = strvar.find("a") # 0
- 40 res = strvar.find("a",2) # 6
- 41 res = strvar.find("d",2,5) # 3 结束索引本身取不到,取到之前的那个值
- 42 print(res)
- 43
- 44 # index与find功能相同,find找不到返回-1,index找不到数据会报错
- 45 res = strvar.index("d",6,8) # error
- 46
- 47 # startswith 判断是否以某个字符或字符串为开头
- 48 '''
- 49 字符串.startswith("字符串",开始索引,结束索引)
- 50 如果存在返回True,否则返回False
- 51 '''
- 52 strvar = "abcdefg"
- 53 res = strvar.startswith("a") # True
- 54 res = strvar.startswith("b",1) # True
- 55 res = strvar.startswith("c",2,5) # True 2 3 4
- 56 print(res)
- 57
- 58 # endswith 判断是否以某个字符或字符串结尾
- 59 res = strvar.endswith("g") # True
- 60 res = strvar.endswith("g",-6) # True
- 61 res = strvar.endswith("d",-6,-3) # True
- 62 print(res)
is系列:
- 1 # isupper 判断字符串是否都是大写字母
- 2 strvar = "ABCD"
- 3 res = strvar.isupper()
- 4 print(res) # True
- 5
- 6 # islower 判断字符串是否都是小写字母
- 7 strvar = "abcd123"
- 8 res = strvar.isupper()
- 9 print(res) # True
- 10
- 11 # isdecimal 检测字符串是否以数字组成 必须是纯数字
- 12 strvar = "12345"
- 13 strvar = "123.4567"
- 14 res = strvar.isdecimal()
- 15 print(res)
填充/去除:
- 1 strvar = "abc"
- 2 # ljust 填充字符串,原字符居左(默认填充空格)
- 3 res = strvar.ljust(10)
- 4 print(res)
- 5 # rjust 填充字符串,原字符居右(默认填充空格)
- 6 res = strvar.rjust(10)
- 7 print(res)
- 8 # center 填充字符串,原字符居中(默认填充空格)
- 9 res = strvar.center(10) # 原字符串长度+填充字符长度=10,默认填充空格
- 10 res = strvar.center(10,"#")
- 11 print(res)
- 12
- 13 # strip 默认去掉首尾两边的空白符
- 14 strvar = "####abcd####"
- 15 res = strvar.strip("#") # 指定去掉的符号
- 16 print(res)
- 17 # rstrip 去掉右边某个字符
- 18 print(strvar.rstrip("#"))
- 19 # rstrip 去掉左边某个字符
- 20 print(strvar.lstrip("#"))
字符串最重要的三个方法:
- 1 # split 按某字符将字符串分割成列表(默认字符是空格)
- 2 strvar = "one two three four"
- 3 lst = strvar.split()
- 4 strvar= "one-two-three-four"
- 5 lst = strvar.split("-") # 从左到右分隔
- 6 lst = strvar.rsplit("-",2) # 从右到左分隔,可以指定分隔的次数
- 7 print(lst)
- 8
- 9 # join 按某字符将列表拼接成字符串
- 10 lst = ['five','six','seven','eight']
- 11 res = "-".join(lst)
- 12 print(res)
- 13
- 14 # replace 替换,把字符串的旧字符替换成新字符
- 15 '''replace(要替换的字符,替换成什么,替换的次数)'''
- 16 strvar = "这只小狗真可爱,真呀真可爱"
- 17 res = strvar.replace("可爱","有趣")
- 18 res = strvar.replace("可爱","有趣",1)
- 19 print(res)
———————————————————————————–
字符串的格式化:
- # 1.顺序传参
- strvar = "{}喜欢吃{}".format("我","苹果")
- print(strvar)
- # 2.索引传参
- strvar = "{1}喜欢吃{0}".format("苹果","我")
- print(strvar)
- # 3.关键字传参
- strvar = "{thing2}喜欢吃{thing1}".format(thing1="苹果",thing2="我")
- print(strvar)
- # 4.容器类型数据(列表或元组传参)
- strvar = "{0[2]}喜欢吃{1[1]}".format(["小红","小明","小刚"],("苹果","香蕉","菠萝"))
- print(strvar)
- # format当中,不能使用逆向下标,不识别
- strvar = "{0[-1]}喜欢吃{1[-1]}".format(["小红","小明","小刚"],("苹果","香蕉","菠萝"))
- print(strvar)
- # 如果容器是字典
- strvar="{group1[xiaoming]}喜欢吃{group2[0]}".format(group1={"xiaohong":"小红","xiaoming":"小明"},group2=("香蕉","苹果"))
- print(strvar)
format 填充符号的使用和转换成特殊符号的使用:
- 1 # format的填充符号的使用(^ < >)
- 2 """
- 3 ^ 原字符串居中
- 4 < 原字符串居左
- 5 > 原字符串居右
- 6
- 7 {who:*^10}
- 8 who:关键字参数
- 9 *:要填充的字符
- 10 ^:原字符串居中
- 11 10:总长度=原字符串长度+填充字符长度
- 12 """
- 13
- 14 strvar = "{who:*^10}在{where:>>10}吃{what:!<10}".format(who="我",where="别人家",what="苹果")
- 15 print(strvar)
- 16
- 17 # 进制转换成特殊符号的使用( :d :f :s :,)
- 18
- 19 # :d 整型占位符 要求类型必须是整型
- 20 strvar = "我吃了{:d}个苹果".format(3) #3.5 error
- 21 # :2d 占用两位,不够拿空格来补,默认居右
- 22 strvar = "我吃了{:2d}个苹果".format(3)
- 23 # < > ^ 调整对应的位置
- 24 strvar = "我吃了{:<2d}个苹果".format(3)
- 25 strvar = "我吃了{:<3d}个苹果".format(3)
- 26 print(strvar)
- 27
- 28 # :f 浮点型占位符(要求类型必须是浮点型)
- 29 strvar = "我的成绩是{:f}".format(96.25)
- 30 # .2f 小数点保留两位
- 31 strvar = "我的成绩是{:.2f}".format(96.25)
- 32 print(strvar)
- 33
- 34 # :s 字符串占位符 (要求类型必须是字符串)
- 35 strvar = "{:s}".format("啦啦啦啦啦")
- 36 print(strvar)
- 37
- 38 # :, 金钱占位符
- 39 strvar = "{:,}".format(3256224583)
- 40 print(strvar)
- 41
- 42 # 综合案例
- 43 strvar = "我今年{:d}岁,我的语文分数是{:.1f},我心情{:s}".format(23,98.65,"非常好")
- 44 print(strvar)
列表的操作:
- # ### 列表的相关操作
- # 1.列表的拼接(同元组)
- lst1 = [1,2,3]
- lst2 = [4,5,6,7,8,8]
- res = lst1 + lst2
- print(res)
- # 2.列表的重复(同元组)
- res = lst1 * 6
- print(res)
- # 3.列表的切片(同元组)
- # 语法:列表[::] 完整格式:[开始索引:结束索引:间隔值]
- # (1)[开始索引:] 从开始索引截取到列表的最后
- # (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
- # (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
- # (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
- # (5)[:]或[::] 截取所有列表
- lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
- # (1) [开始索引:] 从开始索引截取到列表的最后
- res = lst[3:]
- print(res)
- # (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
- res = lst[:6]
- print(res)
- # (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
- res = lst[3:6]
- print(res)
- # (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
- # 正向截取
- res = lst[::2]
- print(res)
- # 逆向截取
- res = lst[::-2]
- print(res)
- # (5)[:]或[::] 截取所有列表
- res = lst[:]
- res = lst[::]
- print(res)
- # 4.列表的获取(同元组)
- # 0 1 2 3 4 5 6 7
- lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
- # -8 -7 -6 -5 -4 -3 -2 -1
- res = lst[6]
- res = lst[-2]
- print(res)
- # 5.列表的修改(可切片)
- '''
- 要求的数据类型是:可迭代性数据(容器类型数据,range对象,迭代器)
- '''
- lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
- # 利用切片可以一次修改多个元素,没有个数上的限制
- lst[1:3] = "abcdef"
- print(lst)
- # 切片配合步长,切出多少个元素,修改多少个元素
- lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
- res = lst[::2] # Alan Sun Huahai Orange
- lst[::2] = range(1,5)
- print(lst)
- # 6.列表的删除
- lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
- del lst[-1]
- print(lst)
- # 删除的是变量res本身,不是列表中的元素
- '''
- res = lst[-1]
- del res
- print(lst)
- '''
- # del lst[:2]
- del lst[::3] #0 3 6 9 12...
- print(lst)
- # 元组中的列表,里面的元素可以修改;
- tup = (1,2,3,[4,5,6,(7,8,9)])
- tup[-1][1] = 66
- print(tup)