字符串的复杂操作(字符串的下标和切片、以及字符串的相关操作函数方法)


一、字符串的复杂操作

1.1 下标(也叫索引)

  • 下标代表着第几个数据,从0开始计算,0代表这第一个数据
    • 在字符串中可以直接使用“字符串[下标]”的形式获取其中数据

      •  # 获取字符串中下标为3的数据
         a =  '123abc'
         print(a[3])
        
        • 运行结果:在这里插入图片描述


1.2 切片

  • 切片:通过下标范围获取数据
    • 切片语法: str [start: end :step]

      • start: 从什么位置开始 如果不写默认从0开始

        • 正向索引(正数):从前往后查

        • 反向索引(负数):从后往前查

      • end: 到什么位置结束

        • 正向索引(正数):从前往后查

        • 反向索引(负数):从后往前查

      • step: 步长 理解为间隔 不添加步长默认为1

        • 正向索引(正数):从前往后间隔

        • 反向索引(负数):从后往前间隔

        • 切片的注意事项:

                  1:包头不包尾(以开始下标为基础截取)
                  2:如果只设置了start,会截取到最后
                  3:如果值设置了end,会从头开始截取
                  4:start和end可以是负数,但statr不能小于end
                  5:注意步长不能为0,否则异常
                  6:起始位置<结束位置 步长为-1的情况下 没有数据 否则倒着输出 就是从右往左
        • 代码示例:

          •   a = "0123456789"
              print("a1:"+a[0:9:2])#如果 start 为0,end 为9,step 为2,那么现实的数据应该是 [0,2,4,6,8]
              print("a2:"+a[-3:10])#如果 start 为负数,那么开始位置下标从后往前查
              print("a3:"+a[-6:-3])#开始结束都为负数,都从后往前查
              print("a4:"+a[-3:-6])#开始结束都为负数,但是结束下标大于开始下标,查询不出数据,因为超出范围了
              print("a5:"+a[::-1])#倒序输出
              print("a6:"+a[0:10:-1])#无数据
              print("a7:"+a[10:0:-2])#倒序查询:和 print("a5:"+a[::-1]) 类似
            


1.3 字符串的相关函数方法

  • len(str):获取字符串长度
  • 字符串下标获取
    • str.find(sub[, start[, end]]): 根据开始下标和结束下标这个范围,获取字符串中指定字符的最开始的下标(最小) ,如果不指定下标范围就默认为全部范围,如果字符在字符串里不存在 结果是-1

    • str.index(sub[, start[, end]]): 和find()一样,但如果子字符不存在,会报错ValueError

    • str.rfind(sub[, start[, end]): 根据开始下标和结束下标这个范围,获取字符串中指定字符的最末尾的下标(最大) ,如果不指定下标范围就默认为全部范围,如果字符在字符串里不存在 结果是-1

    • str.rindex(sub[, start[, end]]): 和rfind()一样,但如果子字符不存在,会报错ValueError

      • 代码示例:
        •   x = "abcdefg"
            print(len(x))#获取字符串长度
            
            print(x.find('c')) # 获取字符的下标,如果字符在字符串里不存在 结果是-1
            print(x.index('c')) # 使用idnex获取字符的下标,如果字符不存在 会报错
            
            print(x.find('c',4,7)) # 查看 4~7这个范围是否存在该字符,不存在给 -1
            
            print(x.rfind('c')) # 最大索引
            print(x.index('c'))# 最大索引 没有就报错
          

  • 字符串查找判断
    • startswith(prefix[,start[,end]]): 判断字符串是否以 prefix 属性传入的内容为开头,如果是返回 True,否则返回 False。 如果有可选项 start,将从所指定位置开始检查。 如果有可选项 end,将在所指定位置停止比较

    • endswith(suffix[, start[, end]]): 判断字符串是否以 suffix 属性传入的内容为结尾,如果是返回 True,否则返回 False。 如果有可选项 start,将从所指定位置开始检查。 如果有可选项 end,将在所指定位置停止比较

    • isalpha(): 如果字符串中的所有字符都是字母,并且至少有一个字符,返回 True ,否则返回 False 。

    • isdigit(): 如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True ,否则返回 False 。数字包括十进制字符和需要特殊处理的数字,如兼容性上标数字

    • isalnum():: 如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回 True , 否则返回 False 。

    • isspace(): 如果字符串中只有空白字符且至少有一个字符则返回 True ,否则返回 False .

      • 代码示例:
        •   #is开头的是判断  结果是一个布尔类型
            print('hello'.startswith('e')) # False
            print('hello'.endswith('llo'))# true
            print('he45llo'.isalpha()) # False    alpha字母
            print('good'.isdigit()) # False
            print('123'.isdigit())# True
            print('3.14'.isdigit())# False
            # alnum 判断是否由数字和字母组成
            print('ab12hello'.isalnum())# True
            print('hello'.isalnum())# True
            print('1234'.isalnum())# True
            print('4-1'.isalnum())# False
            print('        '.isspace())# True
          

  • 字符串中的计数器
    • count(sub[,start[,end]]): 返回子字符串 sub 在 [start, end] 范围内非重叠出现的次数。 [start, end] 如果不填写范围默认全部范围
      • 代码示例
        •   a = "abcdefgaaa"
            print(a.count("a"))
            # 运行结果:4
          

  • 字符串的替换
    • str.replace(old, new[, count]): 返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。 如果给出了可选参数 count,则只替换前 count 次出现。
      • 代码示例
        •   a = "aaaaa"
            b = a.replace("a","b",3)# 将 aaaaa 字符串前三个字母替换成 b
            print(b)
            # 结果:bbbaa
          

  • 字符串的分割
    • split(sep=None, maxsplit=- 1):

      • sep : 通过 sep 作为分隔字符串,返回一个由字符串内单词组成的列表。(sep 属性传入的分隔符必须是字符串中存在的,否则无效)

      • maxsplit: 如果给出了 maxsplit,则最多进行 maxsplit 次拆分(因此,列表最多会有 maxsplit+1 个元素)。 如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)。

      • 代码示例

        •   a = "aa aa er 6345"
            
            print(a.split(" ",-1))# 全部拆分
            print(a.split("111",-1))# 因为字符串中不存在 111 所以分割无效,只是将字符串存储进列表中
            print(a.split(" ",2))# 通过空格可以差分成四份,但是 maxsplit 传入了参数,根据参数传入的是2+1为3份
          
          • 运行结果在这里插入图片描述
    • rsplit(sep=None, maxsplit=- 1): 和split()一样,不过 maxsplit 的拆分是从右边开始

      • 代码示例
        •   a = "aa aa er 6345"
            
            print(a.rsplit(" ",-1))
            print(a.rsplit("111",-1))
            print(a.rsplit(" ",2))
          
          • 运行结果在这里插入图片描述
    • splitlines(): 通过换行分割

      • 代码示例
        •   a = "aa\naa\ner\n6345"
            
            print(a.splitlines())
          
          • 运行结果在这里插入图片描述
    • partition(str): 把字符串以str传入的参数分割,分割成为三部分,str前,str和str后,三部分组成一个元组

      • 代码示例
        •   mystr = '今天天气好晴朗,处处好风光'
            print(mystr.partition('好'))
          
          • 运行结果在这里插入图片描述
    • rpartition(str): 把字符串以str传入的参数分割,分割成为三部分,str前,str和str后,三部分组成一个元组,和partition()效果一样,不过是从右开始


  • 字符串的大小写转换
    • capitalize(): 返回原字符串的副本,其首个字符大写,其余为小写

    • upper(): 全部转为大写

    • lower(): 全部转为小写

    • title(): 每个单词的首字母大写

      • 代码示例
        •   print("capitalize():" + "abc".capitalize())
            print("upper():" + "abc".upper())
            print("lower():" + "ABC".lower())
            print("title():" + "capitalize upper lower title".title())
          
          • 运行结果在这里插入图片描述

  • 字符串的空格操作
    • ljust(width,fillchar): 让字符串以指定长度显示,如果长度不够,默认在右边使用空格补齐

      • width:长度
      • fillchar:填充字符,模式是空格
    • rjust(width,fillchar): 和ljust()效果一样,只不过是填充在了左边

    • center(width,fillchar): 和以上两种说明都是一样的,只不过把内容填充到两把,把内容居中了

    • lstrip(): 去掉左边的空格

    • rstrip(): 去掉右边的空格

    • strip(): 去掉两边的空格

      • 代码示例
        •   	print("ljust():" + "abc".ljust(10,"="))
            	print("rjust():" + "abc".rjust(10,"+"))
            	print("lstrp():" + ' abc '.lstrip())
            	print("rstrip():" + ' abc '.rstrip())
            	print("strip():" + ' abc '.strip())
          
          • 运行结果
            在这里插入图片描述

  • 列表转换成字符串
    • join(): 将列表转为字符串
      • 代码示例
        •   a=['a','b','c','d']
            
            print('-'.join(a)) # 以 '-' 字符为分割,将列表中的数据拼接成一个字符串
          
          • 运行结果在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值