Day07 字符串和列表的相关操作

字符串的相关操作

  • 字符串的拼接
  • 字符串的重复
  • 字符串跨行拼接
  • 字符串的索引
  • 字符串的切片

字符串的拼接

#(1) 字符串的拼接
strvar = "今天是" + "星期一"
strvar +=",今天非常开心"
print(strvar)

字符串的重复

strvar = "重要的事说三遍" * 3
print(strvar)

字符串跨行拼接

strvar = "sfdaffgasdgadagdadagaa"\
"多余的放到第二行进行显示"
print(strvar)

字符串的索引

# 正向索引 0123
stvar = "1234"
# 逆向索引 -4-3-2-1

字符串的切片:(切片<==> 截取)

#(1)[开始索引:] 从开始索引截取到字符串的最后
strvar = "黑夜给了我黑色的眼睛,但我却用来翻白眼" 
res = strvar[11:]
print(res) # 但我却用来翻白眼
# (2) [:结束索引] 从开头截取到索引之前(结束索引-1)
res = strvar[:10]
print(res)
# 3 [开始索引:结束索引] 从开始索引截取到结束索引之前
res = strvar[8:10]
print(res) # 眼睛
# (4) [开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
# 正序
res = strvar[::3] # 0 3 6 9 12 ...从开始截取到最后
print(res) # 黑了色睛我来眼
# 倒叙
res = strvar[::-1] # -1 -2 -3 -4 -5 ....
print(res) # 眼白翻来用却我但,睛眼的色黑我了给夜黑

# (5) [:]或[::] 截取所有字符串
res = strvar[:]
res = strvar[::]
print(res)
字符串的方法
#字符串相关函数

# capitalize 字符串首字母大写
strvar = "how old are you"
res = strvar.capitalize()
print(res) # How old are you

# title 每个字母的首字母大写
strvar = "how old are you"
res = strvar.title()
print(res)  # How Old Are You

# lower 将所有字母变成小写
strvar = "to Be or Not TO be that is a question"
res = strvar.lower()
print(res) #to be or not to be that is a question

# upper 将所有字母变成大写
res = strvar.upper()
print(res) # TO BE OR NOT TO BE THAT IS A QUESTION

# swapcase 大小写互换
# swapcase 大小写互换
strvar = "I Love You"
res = strvar.swapcase()
print(res) # i lOVE yOU

# len 计算字符串的长度
# len 计算字符串的长度
strvar = "aeffa24fad"
res = len(strvar)
print(res) # 10

# count 计算字符串中某个元素的数量
# count 计算字符串中某个元素的数量
strvar = "asdf23rfad"
res = strvar.count('a')
print(res)  #2

# find 查找某个字符串第一次出现的索引位置 (推荐)
""" 字符串.find("字符",开始索引,结束索引) 如果找不到直接返回-1"""
strvar = "oh Father this my Favorate dog"
res = strvar.find("F") # 3
res = strvar.find("F",4) # 18
res = strvar.find("Fav",5,10) # -1 结束索引本身取不到,取到之前的那个值
print(res)

# index 与 find 功能相同, 但 index找不到直接报错, find返回 -1
# res = strvar.index("Fav",5,10) # error

# startswith 判断是否以某个字符串或字符为开头
strvar = "oh Father this is my Favorate dog"
# res = strvar.startswith("oh") # True
res = strvar.startswith("this",10) # True
res = strvar.startswith("this",10,13) # False  10 11 12
print(res)

# endswith 判断是否以某个字符或字符串为结尾
strvar = "oh Father this is my Favorate dog"
res = strvar.endswith("dog") # True
res = strvar.endswith("rate",-12)
res = strvar.endswith("rate",-8,-4) # True
res = strvar.endswith("rate",-8,-5) # False -5取不到
print(res)

# isupper 判断字符串是否都是大写字母
strvar = "ABCD"
res = strvar.isupper()
print(res) # True

# islower 判断字符串是否都是小写字母
strvar = "abcd1234"   #有数字不影响判断
res = strvar.islower()
print(res) # True

# isdecimal 检测字符串是否以数字组成 必须是纯数字
strvar = "12345" # True
strvar = "12334.312421" # False
res = strvar.isdecimal()
print(res)

# ljust 填充字符串,原字符居左(默认填充空格)
strvar = "abc"
res = strvar.ljust(10)
print(res)

# rjust 填充字符串,原字符串居右
res = strvar.rjust(10,"*")  # 用*填充
print(res)

# center 填充字符串 原字符居中(默认填充空格)
res = strvar.center(10) # 原字符串长度 + 填充长度 = 10,默认填充空格
res = strvar.center(10,"#")
print(res)

# strip 默认去首尾两边的空白符
strvar = "  @@ 周杰伦    @@@  "
res = strvar.strip() # "@@ 周杰伦    @@@"
strvar = "@@@@@ 周杰伦           @@@@@"
res = strvar.strip("@") # 去掉首位两边指定的符号
print(res)

# lstrip 去掉左边的某个符号
strvar = "*@@@@周杰伦@@@@#"
res = strvar.lstrip("*")
print(res) # @@@@周杰伦@@@@#

# rstrip 去掉右边的某个符号
strvar = "*@@@@周杰伦@@@@#"
res = strvar.rstrip("#")
print(res) # *@@@@周杰伦@@@@

# split 按某字符将字符串分割成列表(默认字符是空格)
strvar = "you can you up no can no bb"
lst = strvar.split()
strvar = "you-can-you-up-no-can-no-bb"
lst = strvar.split("-")   # 从左到右分隔
lst = strvar.split("-",2)# 从左到右分隔,(可以指定分隔的次数)
lst = strvar.rsplit("-",2)# 从右到左分隔,(可以指定分隔的次数)
print(lst)

# join 按某字符将列表拼接成字符串(容器类型都可)
lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
res = " ".join(lst) # 用空白把列表拼接成字符串
res = "_".join(lst) # 用-把列表拼接成字符串
print(res)

# replace 替换 ,把字符串的旧字符换成新字符
"""replace(要替换的字符,替换成什么,替换的次数)"""
strvar = "可爱的小青蛙喜欢吃蚊子,有没有,有没有,还有没有"
res = strvar.replace('有没有','真没有')
res = strvar.replace("有没有","真没有",1) # 替换一次
print(res)
format的用法

数据传参

# ### 字符串的格式化 format 
# (1)顺序传参
strvar = "{}向{}开了一枪,饮弹而亡".format("小鸟","猎人")
print(strvar)
# (2)索引传参                            0        1
strvar = "考试时{0},游戏时{1}".format("唯唯诺诺","重拳出具")
print(strvar)
#(3)关键字传参
strvar = "{who1}甩了一个飞吻,{who2}吐血而亡".format(who1 = "小王",who2 = "老马")
print(strvar)
(4) 容器类型传参(列表和元组)
strvar = "{0[1]}打不过{1[2]}".format(['张三',"李四","王五"],("泰罗","迪迦","me"))
print(strvar)
# format中 不能使用逆向下标,不识别
# strvar = "{a[1]}打不过{b[-1]}".format(a = ['张三',"李四","王五"],b = ("泰罗","迪迦","me"))
# print(strvar)       # error 报错
# 如果容器是字典,直接写键值,不需要加引号
strvar = "{group1[奥特曼]}打死了{group2[0]}".format(group1 = {"奥特曼":"迪迦"},group2 = ("利亚","哥斯拉","霍比特星人"))
print(strvar) #  迪迦打死了利亚

format的填充符号的使用

'''
^ 原字符串居中
> 原字符串居右
< 原字符串居左
{who:*^10}    # 格式严谨
who : 关键字参数
* 要填充的字符
^ : 原字符串居中
10 : 总长度 = 原字符串长度+ 填充的字符串长度
'''
strvar = "{a:*^10}是猪".format(a = '小明')
print(strvar) # ****小明****是猪

进制转换等特殊符号的使用(:d :f 😒 😂

# :d 整型占位符 (要求类型必须是整数)
strvar = "小明买了{:d}瓶花露水".format(3)
# :5d 占用5位,不够用空格补,默认居右
strvar = "小明买了{:5d}瓶花露水".format(3)
print(strvar)
# < > ^ 调整对应的位置
strvar = "小明买了{:^5d}瓶花露水".format(3)  # 居中
print(strvar)  # 小明买了  3  瓶花露水
strvar = "小明买了{:<5d}瓶花露水".format(3)  # 居左
print(strvar)  # 小明买了3    瓶花露水
strvar = "小明买了{:>5d}瓶花露水".format(3)  # 居右
print(strvar)  # 小明买了    3瓶花露水

# :f 浮点型占位符 (要求类型必须是浮点型)
strvar = "小明毕业时,找工作的薪资是{:f}".format(2.55)
print(strvar) # 小明毕业时,找工作的薪资是2.550000(默认保留六位小数)
# :.2f 小数点保留两位 (存在四舍五入)
strvar = "小明毕业时,找工作的薪资是{:.2f}".format(2.5464)
print(strvar)  # 小明毕业时,找工作的薪资是2.55

# :s 字符串占位符 (要求类型必须是字符串类型)
strvar = "{:s}".format("今天天气不错")
print(strvar) # 今天天气不错

# :, 金钱占位符  (将数字三位一隔开)
strvar = "{:,}".format(123453)
print(strvar,type(strvar)) # 123,453 <class 'str'>

列表的相关操作

  • 列表的拼接 (同元组)
  • 列表的重复 (同元组)
  • 列表的切片 (同元组)
  • 列表的获取 (同元组)
  • 列表的修改 ( 可切片 )
  • 列表的删除 ( 可切片 )
# (1)列表的拼接 (同元组)
lst1 = [1,2,3]
lst2 = [4,5,6]
lst = lst1 + lst2
print(lst)

# (2) 列表的重复 (同元组)
lst1 = [1,2,3]
res = lst1 * 3
print(res) # [1, 2, 3, 1, 2, 3, 1, 2, 3]

# (3)列表的切片 (同元组)
# 语法 => 列表[::]  完整格式:[开始索引:结束索引:间隔值]
 # (1)[开始索引:]  从开始索引截取到列表的最后
 # (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
 # (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
 # (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
 # (5)[:]或[::]  截取所有列表
 
 lst = ["花木兰","凯","马超","关羽","李信","狂铁","老夫子","蒙恬"]
# (1)[开始索引:] 从索引开始截取到列表的最后
res = lst[2:]
print(res) # ['马超', '关羽', '李信', '狂铁', '老夫子', '蒙恬']

# (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
res = lst[:4]
print(res) # ['花木兰', '凯', '马超', '关羽']
res1 = lst[:-3]
print(res1) # ['花木兰', '凯', '马超', '关羽', '李信']

# (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
res = lst[2:6]
print(res) # ['马超', '关羽', '李信', '狂铁']

# (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
# 正向截取
res = lst[::2] # 0 ,2,4,6
print(res) # ['花木兰', '马超', '李信', '老夫子']
# 逆向截取
res = lst[::-2] # -1 -3 -5 -7
print(res) # ['蒙恬', '狂铁', '关羽', '凯']

# (5)[:]或[::]  截取所有列表
res = lst[:]
res = lst[::]
print(res)

# (4)列表的获取 (同元组)
#   0       1    2     3      4     5     6       7
lst = ["花木兰","凯","马超","关羽","李信","狂铁","老夫子","蒙恬"]
res = lst[7]
res = lst[-1]
print(res)

# (5)列表的修改 (可切片)
'''
要求的数据类型是
 可迭代数据(容器类型数据,range对象,迭代器)
'''
lst = ["花木兰","凯","马超","关羽","李信","狂铁","老夫子","蒙恬"]
# 利用切片可以一次修改多个元素,没有个数上的限制
lst[1:3] = 'abcd'
print(lst)
lst[3:6] = ["妲己","婉儿","王昭君"]
print(lst)

# # 切片配合步长,切出多少个元素,修改多少个元素
lst = ['花木兰', '凯', '马超', '妲己', '婉儿', '王昭君', '老夫子', '蒙恬']
res = lst[::2] # 0 2 4 6
print(res) # ['花木兰', '马超', '婉儿', '老夫子']
lst[::2] = 'abcd' # 修改切出来的元素
print(lst) # ['a', '凯', 'b', '妲己', 'c', '王昭君', 'd', '蒙恬']
lst[::2] = range(1,5) #
print(lst) # [1, '凯', 2, '妲己', 3, '王昭君', 4, '蒙恬']

# (6) 列表的删除 (可切片)
lst = [1,2,3,4,5]
del lst[1]
print(lst)   # [1, 3, 4, 5]

# 删除的是变量res本身,不是列表中的元素
lst = [1,2,3,4,5]
res = lst[0]
del res
# print(res) # error 报错
print(lst) # [1, 2, 3, 4, 5]

#del lst[::3] # 3代表间隔值
lst = [1,2,3,4,5,6,7,8]
del lst[::3] #删除索引为 0,3,6,
print(lst) # [2, 3, 5, 6, 8]

#del lst[:3] # 3代表结束索引
lst = [1,2,3,4,5,6,7,8]
del lst[:3]
print(lst) # [4, 5, 6, 7, 8]

# 元组中的列表,里面的元素可以修改:
tup = (1,2,3,[4,5,6,(7,8,9)])
tup[-1][1] = 666
# tup[-1][-1][1] = 888 # error 列表中的元组不可以修改
print(tup)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值