python-字符串的操作方法_format_列表的操作

字符串

1. 字符串的相关操作

1. 字符串的拼接

strvar = "今天是" + "星期一"
strvar = strvar + "今天非常开心"
strvar += "今天非常开心"
print(strvar)

2. 字符串的重复

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

3. 字符串的拼接

strvar = "sajdksfksadhfkajhdksadfas" \ 
"jkdsfjksfkjajsf123"
print(strvar)

4. 字符串的索引

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

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

  1. [开始索引 :] 从开头索引截取到字符串的最后

    strvar = "黑夜给了我黑色的眼睛,但是我却用翻白眼"
    res = strvar[11:]
    print(res)
    
  2. [: 结束索引] 从开头截取到结束索引之前(结束索引-1)

    strvar = "黑夜给了我黑色的眼睛,但是我却用翻白眼"
    res = strvar[:10]
    print(res)
    
  3. [开始索引 : 结束索引] 从开始索引截取到结束索引之前(结束索引-1)

    strvar = "黑夜给了我黑色的眼睛,但是我却用翻白眼"
    res = strvar[8:10]
    print(res)
    
  4. [开始索引 : 结束索引 : 间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符

    strvar = "黑夜给了我黑色的眼睛,但是我却用翻白眼"
    # 正序
    res = strvar[::3] # 0 3 6 9 12 15 ... 从开始截取到最后
    print(res)
    # 倒序
    res = strvar[::-1] # -1 -2 -3 -4 -5 -6 -7 ...
    print(res)
    
  5. [ : ]或[ : : ] 截取索引字符串

    strvar = "黑夜给了我黑色的眼睛,但是我却用翻白眼"
    res = strvar[:]
    res = strvar[::]
    print(res)
    

    2. 字符串的方法

    字符串相关函数

    *capitalize 字符串首字母大写

    strvar = "how old are you"
    res = strvar.capitalize()
    print(res)
    

    *title 每个单词的首字母大写

    strvar = "how old are you"
    res = strvar.title()
    print(res)
    

    *upper 将所有字母变大写

    strvar = "to be or not to be that is a question"
    res = strvar.upper()
    print(res)
    

    *lower 将所有字母变小写

    strvar = "TO BE OR NOT TO BE THAT IS A QUESTION"
    res = strvar.lower()
    print(res)
    

    *swapcase 大小写互换

    strvar = "I Love You"
    res = strvar.swapcase()
    print(res)
    

    *len 计算字符串的长度

    strvar = "asdfsdfefc"
    res = len(strvar)
    print(res)
    

    *count 统计字符串中某个元素的数量

    strvar = "asdefsfgsf"
    res = strvar.count("s")
    print(res)
    

    *find 查找某个字符串第一次出现的所有位置 (推荐)

    “”“字符串.find(“字符”,开始索引,结束索引) 如果找不到数据直接返回-1"”"

    strvar = "oh Father this is my Favorite dog"
    res = strvar.find("F")
    res = strvar.find("F",4)
    res = strvar.find("Fav",5,10) # 结束索引本身取不到,取到之前的那个值
    print(res)
    

    *index 与 find 功能相同,find找不到数据返回-1,index找不到数据直接报错

    strvar = "oh Father this is my Favorite dog"
    res = strvar.index("Fav",5,10) # error
    

    *startswith 判断是否以某个字符或字符串为开头

    “”“字符串,startswith(“字符”,开始索引,结束索引) 如果存在返回True,否则返回False”""

    strvar = "oh Father this is my Favorite dog"
    res = strvar.startswith("oh")
    res = strvar.startswith("this",10)
    res = strvar.startswith("this",10,13) # 10 11 12
    print(res)
    

    *endswith 判断是否以某个字符或字符串结尾

    strvar = "oh Father this is my Favorite dog"
    res = strvar.endswith("dog")
    res = strvar.endswith("rate",-12)
    res = strvar.endswith("rate,-12,-4")
    print(res)
    

    *isupper 判断字符串是否都是大写字母

    strvar = "ABCDE"
    res = strvar.isupper()
    print(res)
    

    *islower 判断字符串是否都是小写字母

    strvar = "asdvs1325"
    res = strvar.islower()
    print(res)
    

    *isdecimal 检测字符串是否以纯数字组成 (必须是纯数字)

    strvar = "123456"
    strvar = "123456.984561"
    res = strvar.isdecimal()
    print(res)
    

    *ljust 填充字符串,原字符串居左 (默认填充空格)

    strvar = "abc"
    res = strvar.ljust(10)
    print(res)
    

    *rjust 填充字符串,原字符串居右 (默认填充空格)

    strvar = "abc"
    res = strvar.rjust(10,"&")
    print(res)
    

    *center 填充字符串,原字符串居中 (默认填充空格)

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

    *strip 默认去掉首尾两边的空白符

    strvar = "@@@@   周杰伦     @@@@@@@"
    res = strvar.strip()
    res = strvar.strip("@") # 指定去掉的符号
    print(res)
    

    *rstrip 去掉右边的某个字符

    strvar = "@@@@   周杰伦     @@@@@@@"
    print( strvar.rstrip("@") )
    

    *lstrip 去掉左边的某个字符

    strvar = "@@@@   周杰伦     @@@@@@@"
    print( strvar.lstrip("@") )
    

    *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.rsplit("-",2) # 从右到左分隔,可以指定分隔的次数
    print(res)
    

    *join 按某字符将列表拼接成字符串(容器类型都可)

    lst = ["you","can","you","up","no","can","no","bb"]
    res = "-".join(lst)
    print(res)
    

    *replace 替换 把字符串的旧字符换成新字符

    “”“replace(要替换的字符,替换成什么,替换的次数)”""

    strvar = "可爱的小青蛙喜欢吃蚊子,有没有,有没有,还有没有"
    res = strvar.replace("有没有","真没有")
    res = strvar.replace("有没有","真没有",1)
    print(res)
    

3. 字符串的格式化

format

%d %f %s

1. format 的使用方法

  1. 顺序传参

    strvar = "{}向{}开了一枪".format("李志辉","明浩")
    print(strvar)
    
  2. 索引传参

    strvar = "考试时{1},游戏时{0}".format("唯唯诺诺","全力出击")
    print(strvar)
    
  3. 关键字传参

    strvar = "{who2}甩了一个飞吻,{who1}神魂颠倒".format(who1="刘彩霞",who2="马生平")
    print(strvar)
    
  4. 容器类型数据(列表或者元组)传参

    strvar = "{1[2]}向{0[1]}抛了一个媚眼,鼻血直冒".format(["小红","小明","小花"],("小东","小美","小路"))
    print(strvar)
    
    # format当中,不能使用逆向下标,不识别
    strvar = "{group2[0]}向{group1[2]}抛了一个媚眼,鼻血直冒".format(group1 = ["小红","小明","小花"],group2 = ("小东","小美","小路"))
    print(strvar)
    
    # 如果容器是字典,直接写键值,不需要加上引号
    strvar = "{group1[xh]}向{group2[2]}抛了一个媚眼,鼻血直冒".format(group1 = {"xh":"小红","xm":"小明","xg":"小花"},group2 = ("小东","小美","小路"))
    print(strvar)
    

    2. format 的填充符号的使用 (^ > < )

    1. ^ 原字符串居中

    2. > 原字符串居右

    3. < 原字符串居左

      who:*^10

      who: 关键字参数

      * : 要填充的字符

      ^ : 原字符串居中

      10 : 总长度 = 原字符串长度 + 填充字符长度

    strvar = "{who:*^10}在{where:>>10},{do:!<10}".format(who="刘星",where="酒店",do="睡觉")
    print(strvar)
    

    3.进制转换等特殊符号的使用 ( :d :f 😒 :, )

    1. :d 整型占位符 (要求类型必须是整型)

      strvar = "刘星昨天买了{:d}个花露水".format(100) # 100.55 error
      print(strvar)
      
      # :2d 占用两位,不够两位拿空格来补,默认居右
      strvar = "刘星昨天买了{:2d}个花露水".format(3)
      print(strvar)
      
      # < > ^ 调整对应的位置
      strvar = "刘星昨天买了{:<2d}个花露水".format(3)
      strvar = "刘星昨天买了{:^3d}个花露水".format(3)
      print(strvar)
      
    2. :f 浮点型占位符 (要求类型必须是浮点型)

      strvar = "刘星毕业时,找工作的薪资是{:f}".format(2.5)
      print(strvar)
      
      # :.2f 小数点保留2位
      strvar = "李旭毕业时,找工作的薪资是{:.2f}".format(2.5678)
      print(strvar)
      
    3. 😒 字符串占位符 (要求类型必须是字符串)

      strvar = "{:s}".format("今天天气不错,万里无云")
      print(strvar)
      
    4. :, 金钱占位符

      strvar = "{:,}".format(123456)
      print(strvar)
      
      # 综合案例
      strvar = "同学们毕业后的平均年薪是{:.1f},可以在北京买{:d}套房,感觉非常{:s}".format(600000.681,1,"棒棒")
      print(strvar)
      

列表的操作

  1. 列表的拼接 ( 同元组 )

    lst1 = [1,2,3]
    lst2 = [4,5,6,7]
    res = lst1 + lst2
    print(res)
    
  2. 列表的重复 ( 同元组 )

    lst1 = [1,2,3]
    res = lst1 * 3
    print(res)
    
  3. 列表的切片 ( 同元组 )

    语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]

    (1) [开始索引:] 从开始索引截取到列表的最后

    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    res = lst[2:]
    print(res)
    

    (2) [:结束索引] 从开头截取到结束索引之前(结束索引-1)

    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    res = lst[:4]
    print(res)
    

    (3) [开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)

    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    res = lst[3:7]
    print(res)
    

    (4) [开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值

    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    # 正向截取
    res = lst[::2] # 0 2 4 6 8 ...
    print(res)
    # 逆向截取
    res = lst[::-2] # -1 -3 -5 -7 ...
    print(res)
    

    (5) [:]或[::] 截取所有列表

    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    res = lst[:]
    res = lst[::]
    print(res)
    
  4. 列表的获取 ( 同元组 )

    #         0       1        2	   3       4	   5	    6      7
    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    #     	 -8	     -7		 -6		  -5	 -4		 -3		  -2	 -1
    res = lst[7]
    res = lst[-1]
    print(res)
    
  5. 列表的修改 ( 可切片 )

    """
    要求的数据类型是:
    	可迭代性数据 (容器类型数据,range对象,迭代器)
    """
    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    
    # 利用切片可以一次修改多个元素,没有个数上的限制
    lst[1:3] = "abcd"
    lst[3:5] = ["王凡","牧树人","燕国彰"]
    print(lst)
    
    # 切片配合步长,切出多少个元素,修改多少个元素
    res = lst[::2] # 吕洞宾  铁拐李 张果老 韩湘子
    lst[::2] = "abcd"
    lst[::2] = range(1,5) # lst[::2] = 1234 error
    print(lst)
    
  6. 列表的删除 ( 可切片 )

    lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    del lst[-1]
    print(lst)
    
    # 删除的是变量res本身,不是列表中的元素
    """
    res = lst[-1]
    del res
    print(lst)
    """
    
    del lst[:2]
    del lst[::2] # 0 2 4 6 8 ...
    print(lst)
    
    # 元组中的列表,里面的元素可以修改
    tup = (1,2,3,[4,5,6,(7,8,9)])
    tup[-1][1] = 666
    print(tup)
    

练习

练习1

有变量name = “aleX leNb” 完成如下操作:

  1. 移除 name 变量对应的值两边的空格,并输出处理结果
name = "aleX leNb"
res = name.strip()
print(res)
  1. 移除name变量左边的"al"并输出处理结果
name = "aleX leNb"
res = name.lstrip("al")
res = name[2:]
print(res)
  1. 移除name变量右面的"Nb",并输出处理结果
name = "aleX leNb"
res = name.rstrip("Nb")
res = name[:-2]
print(res)
  1. 移除name变量开头的a与最后的"b",并输出处理结果
name = "aleX leNb"
print(name[1:-1])
res = name.strip("ab")
print(res)
  1. 判断 name 变量是否以 “al” 开头,并输出结果
name = "aleX leNb"
print(name.startswith("al"))
  1. 判断name变量是否以"Nb"结尾,并输出结果
name = "aleX leNb"
print(name.endswith("Nb"))
  1. 将 name 变量对应的值中的 所有的"l" 替换为 “p”,并输出结果
name = "aleX leNb"
print(name.replace("l","p"))
  1. 将name变量对应的值中的第一个"l"替换成"p",并输出结果
name = "aleX leNb"
print(name.replace("l","p",1))
  1. 将 name 变量对应的值根据所有的"l" 分割,并输出结果
name = "aleX leNb"
print(name.split("l"))
  1. 将name变量对应的值根据第一个"l"分割,并输出结果
name = "aleX leNb"
print(name.split("l",1))
  1. 将 name 变量对应的值变大写,并输出结果
name = "aleX leNb"
print(name.upper())
  1. 将 name 变量对应的值变小写,并输出结果
name = "aleX leNb"
print(name.lower())
  1. 将name变量对应的值首字母"a"大写,并输出结果
name = "aleX leNb"
print(name.capitalize())
  1. 判断name变量对应的值字母"l"出现几次,并输出结果
name = "aleX leNb"
print(name.count("l"))
  1. 如果判断name变量对应的值前四位"l"出现几次,并输出结果
name = "aleX leNb"
print(name.count("l",0,4))
  1. 从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
name = "aleX leNb"
print(name.index("N"))
  1. 从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
name = "aleX leNb"
print(name.find("N"))
  1. 从name变量对应的值中找到"X le"对应的索引,并输出结果
name = "aleX leNb"
print(name.find("X le"))
  1. 请输出 name 变量对应的值的第 2 个字符?
name = "aleX leNb"
print(name[1])
  1. 请输出 name 变量对应的值的前 3 个字符?
name = "aleX leNb"
print(name[:3])
  1. 请输出 name 变量对应的值的后 2 个字符?
name = "aleX leNb"
print(name[-2:])
  1. 请输出 name 变量对应的值中 “e” 所在索引位置?
name = "aleX leNb"
print(name.find("e"))

i = 0
while i < len(name):
    if name[i] == "e":
        print(i)
    i+=1    

练习2

实现一个整数加法计算器(两个数相加):

如:content = input(“请输入内容:”) 用户输入:5+9或3+ 9或5 + 6,然后进行分割再进行计算

content = input("请输入内容:")
print(content)
a,b = content.split("+")
total = int(a) + int(b)
print(total)

练习3

升级题:实现一个整数加法计算器(多个数相加):

如:content = input(“请输入内容:”) 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算

content = input("请输入内容:")
lst = content.split("+")
total = 0
print(lst)
for i in lst:
    total += int(i)
print(total)    

练习4

计算用户输入的内容有多少个整数

total = 0
content = input("请输入内容:")
for i in content:
    if i.isdecimal():
        total += 1
print(total)        

练习5

等待用户输入内容,是否包含敏感字符?

如果存在敏感字符提示“存在敏感字符请重新输入”,敏感字符:“粉嫩”、“铁锤”

while True:
    sign = False
    strvar = input("请输入内容:")
    lst = ["粉嫩","铁锤"]
    for i in lst:
        if i in strvar:
            sign = True
            print("存在敏感字符请重新输入")
    if sign == False:
        print("这个名字可以使用")

练习6

制作趣味模板程序需求:等待用户输入名字、地点、爱好

拼装数据打印出:敬爱可亲的xxx,最喜欢在xxx地方xxx

name = input("请输入名字:")
place = input("请输入地点:")
hobby = input("请输入爱好:")
print("敬爱可亲的{},最喜欢在{}地方{}".format(name,place,hobby))

拓展

for … else … 如果遇到break终止循环,else这个分支不执行

for i in range(3):
    print(i)
    if i == 1:
        break
else:
    print("ok")
    
while True:
	sign = False
	strvar = input("请输入内容:")
	lst = ["粉嫩","铁锤"]
	for i in lst:
		if i in strvar:
			print("有敏感词汇!")
			break
	else:
		print("这个名字可以使用!")    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I believe I can fly~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值