zoukankan      html  css  js  c++  java
  • day7.关于字符串的相关操作

     一、字符串的相关操作

    """
    (1)字符串的拼接
    (2)字符串的重复
    (3)字符串跨行拼接
    (4)字符串的索引
    (5)字符串的切片:
    语法 => 字符串[::]  完整格式:[开始索引:结束索引:间隔值]
        (1)[开始索引:]  从开始索引截取到字符串的最后
        (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
        (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
        (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
        (5)[:]或[::]  截取所有字符串
    
    """

    1、字符串的拼接

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

    2、字符串的重复

    # (2)字符串的重复 *
    strvar = "重要的事情说三遍" * 3
    print(strvar)

    3、字符串跨行拼接

    strvar = "sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf" 
    "多余的几行放在第二行进行显示"
    print(strvar)

    4、字符串的索引

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

    5、字符串的切片

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

    二、字符串相关函数

    # ### 字符串相关函数
    # *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 将所有字母变成小写 
    res = strvar.lower()
    print(res)
    
    # *swapcase 大小写互换 
    strvar = "I Love You"
    res = strvar.swapcase()
    print(res)
    
    
    # *len 计算字符串的长度 
    strvar = "adfs234sdfsa"
    res = len(strvar)
    print(res)
    
    # *count 统计字符串中某个元素的数量 
    strvar = "adfs234sdfsa"
    res = strvar.count("a")
    print(res)
    
    # *find 查找某个字符串第一次出现的索引位置  (推荐)
    """字符串.find("字符",开始索引,结束索引) 如果找不到直接返回-1"""
    strvar = "oh Father this is my Favorate dog"
    res = strvar.find("F")
    res = strvar.find("F",4)
    res = strvar.find("Fav",5,10) # 结束索引本身取不到,取到之前的那个值
    print(res)
    
    # *index 与 find 功能相同 find找不到返回-1,index找不到数据直接报错
    # res = strvar.index("Fav",5,10) error
    
    
    # *startswith 判断是否以某个字符或字符串为开头 
    """字符串.startswith("字符",开始索引,结束索引) 如果存在返回True,否则返回False"""
    strvar = "oh Father this is my Favorate dog"
    res = strvar.startswith("oh")
    res = strvar.startswith("this",10)
    res = strvar.startswith("this",10,13) # 10 11 12
    print(res)
    
    # *endswith 判断是否以某个字符或字符串结尾
    res = strvar.endswith("dog")
    res = strvar.endswith("rate",-12)
    res = strvar.endswith("rate",-12,-4)
    print(res)
    
    # *isupper 判断字符串是否都是大写字母 
    strvar = "ABCD"
    res = strvar.isupper()
    print(res)
    
    # *islower 判断字符串是否都是小写字母 
    strvar = "abcdd12345"
    res = strvar.islower()
    print(res)
    
    # *isdecimal 检测字符串是否以数字组成  必须是纯数字
    strvar = "12354"
    strvar = "12354.8979112"
    res = strvar.isdecimal()
    print(res)
    
    
    
    strvar = "abc"
    #ljust  填充字符串,原字符居左 (默认填充空格)
    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()
    res = strvar.strip("@") # 指定去掉的符号
    print(res)
    
    strvar = "@@@@@    周杰伦           @@@@@"
    #rstrip 去掉右边某个字符 
    print(  strvar.rstrip("@")   )
    #lstrip 去掉左边某个字符 
    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(lst)
    
    # *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)
    字符串相关函数
    # test = "username	email	password
    kxssq	113555	123456
    kxq	113555	123456
    kxq	113555	123456"
    # v = test.expandtabs(10)
    # print(v)
    
    # 首字母大写
    # test = "adfs"
    # v = test.capitalize()
    # print(v)
    
    # 大写转小写  lower只能对应英文字符 casefold可以特殊字符
    # test = "aSdf"
    # v1 = test.casefold()
    # print(v1)
    # v2 = test.lower()
    # print(v2)
    
    # 设置宽度,并将内容居中
    # 20总长度,把aSdf居中
    # test = "aSdf"
    # v = test.center(20, '*')
    # print(v)
    
    # 空白未知填充,一个字符可有可无
    # test = "kxq"
    # v1 = test.ljust(20, '*')
    # print(v1)
    # v2 = test.rjust(20, '*')
    # print(v2)
    # v3 = test.zfill(20)
    # print(v3)
    
    
    # 字符串出现的次数
    # test = "aSdffaSdff"
    # v = test.count('a')
    # print(v)
    
    # 字符串在第几个字符之间出现的次数 a 0
    # test = "aSdffaSdff"
    # v = test.count('aS', 5, 11)
    # print(v)
    
    # encode
    # decode
    # test = "aSdffaSdff"
    # print(test.encode("gbk"))
    # print(test.encode("utf-8"))
    
    # 以什么结尾
    # test = "asdf"
    # v = test.endswith('f')
    # print(v)
    # # 以什么开始
    # test = "asdf"
    # v = test.startswith('a')
    # print(v)
    
    # 从开始往后找,找到第一个后,获取下标 >=5 <7 未找到-1
    # 方法index() 找不到会报错 忽略用find 找不到返回-1
    # test = "asdfasdf"
    # v = test.find('sd', 5, 7)
    # print(v)
    
    # 格式化,将字符串中的占位符替换为指定的值
    # test = "i an {name}"
    # v = test.format(name = 'kxq')
    # print(v)
    # test = "i an {0}"
    # v = test.format('kxq')
    # print(v)
    #
    # test = "i an {name}"
    # v = test.format_map({"name": "kxq"})
    # print(v)
    
    # 字符串中是否只包含字母数字
    # test = "adf89-_"
    # v = test.isalnum()
    # print(v)
    
    # 字符串中是否是字母、汉字
    # test = "adf89-_"
    # v = test.isalpha()
    # print(v)
    
    # 判定当前输入的是否是数字 isdigit()可以判定特殊的数字 例:圈2
    # test = "123"
    # v1 = test.isdecimal()
    # v2 = test.isdigit()  # 圈 2
    # v3 = test.isnumeric() # 这种“二”也是数字
    # print(v1, v2)
    
    # 是否存在不可显示的字符 	 
    
    # test = "af
    ds"
    # v = test.isprintable()
    # print(v)
    
    # 判断是否全部是空格
    # test = "af dsd"
    # v = test.isspace()
    # print(v)
    
    # 判断是否是标题
    # test = " Return True if the string is a title-cased string, False otherwise"
    # v1 = test.istitle()
    # print(v1)
    # v2 = test.title()
    # print(v2)
    # v3 = v2.istitle()
    # print(v3)
    
    # 将字符串中的每一个元素按照指定分隔符进行拼接
    # test = "你是风儿我是沙"
    # print(test)
    # t = " "
    # v = t.join(test)
    # print(v)
    
    # lower:判断字符串是否全部为小写,字符串都变为小写  upper:判断字符串是否全部为大写,字符串都变为大写
    # test = "Kxq"
    # v1 = test.islower()
    # v2 = test.lower()
    # v3 = v2.islower()
    # print(v1, v2, v3)
    # v4 = test.isupper()
    # v5 = test.upper()
    # v6 = v5.isupper()
    # print(v4, v5, v6)
    
    # # 去除左右 全部空格 
     	  可移除指定字符串,有限最多匹配 test.rstrip(qx)
    # test = " kxq "
    # v1 = test.lstrip()
    # v2 = test.rstrip()
    # v3 = test.strip()
    # print(v1)
    # print(v2)
    # print(v3)
    
    # v1建立对应关系,v1把test中字符aeiou替换为12345
    # test = "fdasfgdasgas;aeiouasdfg;erwqiopjmfa"
    # v1 = str.maketrans("aeiou", "12345")
    # v2 = test.translate(v1)
    # print(v2)
    
    # 以‘f’ 为分隔符,进行分割 parttition:从左到右  rpartition:从右到左 包含字符‘f’
    test = "adfajlkupowerfsd"
    v1 = test.partition('f')
    print(v1)
    # v2 = test.rpartition('f')
    # print(v2)
    # # 不包含字符'f'
    # v3 = test.split('f')
    # print(v3)
    # v4 = test.rsplit('f')
    # print(v4)
    #
    # # 分割,只能根据
     True包含
     False不包含
    
    # test = "fasfs
    gasgf
    atsgf"
    # v1 = test.splitlines(True)
    # print(v1)
    # v2 = test.splitlines(False)
    # print(v2)
    
    # 以***开头,以***结尾
    # test = "fasgsafg"
    # v1 = test.startswith('fa')
    # print(v1)
    # v2 = test.endswith('fg')
    # print(v2)
    
    # 大小写转换
    test = "kXq"
    v1 = test.swapcase()
    print(v1)
    相对完整举例字符串函数

    三、字符串的格式化 format

    # (1)顺序传参
    strvar = "{}向{}开了一枪,银弹而亡".format("aa","bb")
    print(strvar)
    
    
    # (2)索引传参
    strvar = "考试时{1},游戏时{0}".format("唯唯诺诺","重拳出击")
    print(strvar)
    
    
    # (3)关键字传参
    strvar = "{who2}甩了一个飞吻,{who1}神魂颠倒".format(who1="qq",who2="cc")
    print(strvar)
    
    # (4)容器类型数据(列表或元祖)传参
    strvar = "{1[2]}向{0[0]}抛了一个媚眼,鼻血直冒三万多尺,失血而亡".format(["aa","bbb","ccc"],("qqq","www","eee"))
    print(strvar)
    
    # format当中,不能使用逆向下标,不识别
    strvar = "{group2[0]}向{group1[-1]}抛了一个媚眼,鼻血直冒三万多尺,失血而亡".format(group1 = ["aa","bb","cc"],group2 = ("qq","ww","eee"))
    print(strvar)
    
    # 如果容器是字典,直接写键值,不需要加上引号
    strvar = "{group1[ccg]}向{group2[1]}抛了一个媚眼,鼻血直冒三万多尺,失血而亡".format(group1 = {"kxq":"aaa","ccg":"ccc","syj":"sss"},group2 = ("www","eee","rrr"))
    print(strvar)
    
    format
    format

    1、format填充符号的使用

    """
    ^  原字符串居中
    >  原字符串居右
    <  原字符串居左
    
    {who:*^10}
    who : 关键字参数
    *   : 要填充的字符
    ^   : 原字符串居中
    10  : 总长度 = 原字符串长度 + 填充字符长度
    """
    
    strvar = "{who:*^10}在{where:>>10},{do:!<10}".format(who="aa",where="H",do="dosomething")
    print(strvar)
    
    
    
    # (6)进制转换等特殊符号的使用( :d :f :s :, )
    
    # :d 整型占位符 (要求类型必须是整型)
    strvar = "{:d}".format(100) # 100.5error
    print(strvar)
    # :2d 占用两位,不够两位拿空格来补,默认居右
    strvar = "{:2d}".format(3)
    # < > ^ 调整对应的位置
    strvar = "{:<2d}".format(3)
    strvar = "{:^3d}".format(3)
    print(strvar)
    
    
    
    # :f 浮点型占位符 (要求类型必须是浮点型)
    strvar = "刘心毕业时,找工作的薪资是{:f}".format(2.5)
    # :.2f 小数点保留2位
    strvar = "刘心毕业时,找工作的薪资是{:.2f}".format(2.56789)
    print(strvar)
    
    # :s 字符串占位符 (要求类型必须是浮点型)
    strvar = "{:s}".format("今天天气不错,万里无云")
    print(strvar)
    
    
    # :, 金钱占位符
    strvar = "{:,}".format(123456789)
    print(strvar)
    
    填充符号的使用
    填充符号的使用

    四、练习 

    '''
    1.有变量name = "aleX leNb" 完成如下操作:
    
    移除 name 变量对应的值两边的空格,并输出处理结果
    1)移除name变量左边的"al"并输出处理结果
    2)移除name变量右面的"Nb",并输出处理结果
    3)移除name变量开头的a与最后的"b",并输出处理结果
    4)判断 name 变量是否以 "al" 开头,并输出结果
    5)判断name变量是否以"Nb"结尾,并输出结果
    6)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果 
    7)将name变量对应的值中的第一个"l"替换成"p",并输出结果
    8)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
    9)将name变量对应的值根据第一个"l"分割,并输出结果。 
    10)将 name 变量对应的值变大写,并输出结果
    11)将 name 变量对应的值变小写,并输出结果
    12)将name变量对应的值首字母"a"大写,并输出结果
    13)判断name变量对应的值字母"l"出现几次,并输出结果
    14)如果判断name变量对应的值前四位"l"出现几次,并输出结果
    15)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
    16)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
    17)从name变量对应的值中找到"X le"对应的索引,并输出结果
    18)请输出 name 变量对应的值的第 2 个字符? 
    19)请输出 name 变量对应的值的前 3 个字符? 
    20)请输出 name 变量对应的值的后 2 个字符?
    21)请输出 name 变量对应的值中 "e" 所在索引位置?
    
    2.实现一个整数加法计算器(两个数相加):
    如:content = input("请输入内容:") 用户输入:5+9或3+ 9或5 + 6,然后进行分割再进行计算
    
    3.升级题:实现一个整数加法计算器(多个数相加):
    如:content = input("请输入内容:") 用户输入:5+9+6 +12+  13,然后进行分割再进行计算。
    
    4.计算用户输入的内容中有几个整数(以个位数为单位)。
    如:content = input("请输入内容:")   # 如fhdal234slfh98769fjdla
    
    5.等待用户输入内容,是否包含敏感字符?
    如果存在敏感字符提示“存在敏感字符请重新输入”,敏感字符:“粉嫩”、“铁锤”
    
    
    6.制作趣味模板程序需求:等待用户输入名字、地点、爱好
    拼装数据打印出:敬爱可亲的xxx,最喜欢在xxx地方xxx
    '''
    # 0)移除 name 变量对应的值两边的空格,并输出处理结果
    res = name.strip()
    print(res)
    1.0
    # 1)移除name变量左边的"al"并输出处理结果
    res = name.lstrip("al")
    res = name[2:]
    print(res)
    1.1
    # 2)移除name变量右面的"Nb",并输出处理结果
    res = name.rstrip("Nb")
    res = name[:-2]
    print(res)
    1.2
    # 3)移除name变量开头的a与最后的"b",并输出处理结果
    print(name[1:-1])
    res = name.strip("ab")
    print(res)
    1.3
    # 4)判断 name 变量是否以 "al" 开头,并输出结果
    print(name.startswith("al"))
    1.4
    # 5)判断name变量是否以"Nb"结尾,并输出结果
    print(name.endswith("Nb"))
    1.5
    # 6)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
    print(name.replace("l","p") )
    1.6
    # 7)将name变量对应的值中的第一个"l"替换成"p",并输出结果
    print(name.replace("l","p",1) )
    1.7
    # 8)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
    print(name.split("l"))
    1.8
    # 9)将name变量对应的值根据第一个"l"分割,并输出结果。 
    print(name.split("l",1))
    1.9
    # 10)将 name 变量对应的值变大写,并输出结果
    print(name.upper())
    1.10
    # 11)将 name 变量对应的值变小写,并输出结果
    print(name.lower())
    1.11
    # 12)将name变量对应的值首字母"a"大写,并输出结果
    print(name.capitalize())
    1.12
    # 13)判断name变量对应的值字母"l"出现几次,并输出结果
    name.count("l")
    1.13
    # 14)如果判断name变量对应的值前四位"l"出现几次,并输出结果
    print(name.count("l",0,4))
    1.14
    # 15)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
    name.index("N")
    1.15
    # 16)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
    name.find("N")
    1.16
    # 17)从name变量对应的值中找到"X le"对应的索引,并输出结果
    name.find("X le")
    1.17
    # 18)请输出 name 变量对应的值的第 2 个字符? 
    name[1]
    1.18
    # 19)请输出 name 变量对应的值的前 3 个字符? 
    name[:3] 
    1.19
    # 20)请输出 name 变量对应的值的后 2 个字符?
    name[-2:]
    1.20
    # 21)请输出 name 变量对应的值中 "e" 所在索引位置?
    name = "aleX leNb"
    print(name.find("e"))
    
    
    i = 0 
    while i<len(name):
        if name[i] == "e":
            print(i)
        i+=1
    1.21
    # 2.实现一个整数加法计算器(两个数相加):
    # 如:content = input("请输入内容:") 用户输入:5+9或3+ 9或5 + 6,然# 后进行分割再进行计算
    content = input("请输入内容:")
    print(content)
    a,b = content.split("+")
    total = int(a) + int(b)
    print(total)
    
    print(  int("     6       ")  )
    2
    # 3.升级题:实现一个整数加法计算器(多个数相加):
    # 如:content = input("请输入内容:") 用户输入:5+9+6 +12+  13,然后进行分割再进行计算。
    content = input("请输入内容:") 
    lst = content.split("+")
    total = 0 
    print(lst)
    for i in lst:
        total += float(i)
    print(total)
    
    
    total = 0 
    content = input("请输入内容:") 
    for i in content :
        if i.isdecimal():
            total += 1
            
    print(total)
    3
    # 5.等待用户输入内容,是否包含敏感字符?
    # 如果存在敏感字符提示“存在敏感字符请重新输入”,敏感字符:“粉嫩”、“铁锤”
    while True:
        sign = False
        strvar = input("请输入内容:")
        lst = ["粉嫩","铁锤"]
        for i in lst:
            if i in strvar:
                sign = True
                print("有敏感词汇")
                
        if sign == False:
            print("这个名字可以使用")
    
    
    
    # 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("这个名字可以使用!")
    5
    # 6.制作趣味模板程序需求:等待用户输入名字、地点、爱好
    # 拼装数据打印出:敬爱可亲的xxx,最喜欢在xxx地方xxx
    
    name = input("请输入名字:")
    place = input("请输入地点:")
    hobby = input("请输入爱好:")
    
    
    print("敬爱可亲的{},最喜欢在{}地方{}".format(name,place,hobby))
    6
  • 相关阅读:
    努力努力,我假期要练琴学css
    在遇到困难时我们都会想要是这一切不曾发生该多好,可现实并不以我们的意志为转移,我们所能做的就是去克服...
    寒假学习目标~
    平安夜&&圣诞节
    you are the ont that we would like to trust and ca...
    Happy New Year!PR升3啦!
    呵呵,Merry Christmas & Happy New Year!
    使用Rx Framework实现XAML中的物体拖动
    MVVM绑定多层级数据到TreeView并设置项目展开
    Entity framework中EntityFunctions.CreateDateTime方法的闰年闰月bug
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13302220.html
Copyright © 2011-2022 走看看