day10字符串相关方法

字符串和函数

字符串相关方法

​ 字符串.xxx()

  1. 字符串.join(序列) - 将序列中的元素用指定的字符串拼接在一起,形成一个新的字符串(序列中的元素必须是字符串)

    list1 = ['后裔', '王昭君', '鲁班七号', '孙悟空']
    result = ''.join(list1)  # 后裔王昭君鲁班七号孙悟空
    print(result)
    
    result = '+'.join(list1)  # 后裔+王昭君+鲁班七号+孙悟空
    print(result)
    
    result = ' and '.join(list1)  # 后裔 and 王昭君 and 鲁班七号 and 孙悟空
    print(result)
    

    如果需要join的序列中的元素不是字符串,就想办法把它的元素变成字符串再join

    nums = [23, 45, 67, 89, 45]
    result = ''.join([str(i) for i in nums])
    print(result)  # 2345678945
    
    result = '*'.join('abc')
    print(result)  # a*b*c
    
  2. 字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割,返回包含切割后每一小段对应的字符串的列表

    字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点对字符串1进行切割

    str1 = 'abcmn123mnkplmn##'
    result = str1.split('mn')
    print(result)  # ['abc', '123', 'kpl', '##']
    str1 = r'c:\root\bin\etc\path'
    result = str1.split('\\')
    print(result)  # ['c:', 'root', 'bin', 'etc', 'path']
    str1 = 'mnabcmnmn123mnkplmn##mn'
    result = str1.split('mn')
    print(result)  # ['', 'abc', '', '123', 'kpl', '##', '']
    
    str1 = 'abcmn123mnkplmn##'
    result = str1.split('mn', 2)
    print(result)  # ['abc', '123', 'kplmn##']
    
  3. 字符串1.replace(字符串2,字符串3) - 将字符串1中所有字符串2都替换成字符串3

    字符串1.replace(字符串2, 字符串3, N) - 将字符串1中前N个字符串2都替换成字符串3

    str1 = 'mnabcmnmn123mnkplmn##mn'
    result = str1.replace('mn', 'ab')
    print(result)  # ababcabab123abkplab##ab
    str1 = 'mnabcmnmn123mnkplmn##mn'
    result = str1.replace('mn', '')
    print(result)  # abc123kpl##
    str1 = 'mnabcmnmn123mnkplmn##mn'
    result = str1.replace('mn', 'AB', 2)
    print(result)  # ABabcABmn123mnkplmn##mn
    
  4. 字符串.strip() - 删除字符串左右两端的空白字符

    字符串.rstrip()
    字符串.lstrip()

    str1 = '\n   \t小 明 \n \t'
    print(str1)
    str2 = str1.strip()
    print(str2)
    str1 = '/小明///'
    str2 = str1.strip('/')
    print(str2)
    
  5. find、index

    字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回) - 如果字符串2不存在返回-1
    字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回) - 如果字符串2不存在报错
    字符串1.find(字符串2, 开始下标, 结束下标) - 获取字符串1中指定范围内字符串2第一次出现的位置
    字符串1.index(字符串2, 开始下标, 结束下标)

    str1 = 'how are you? I am fine,thank you! and you?'
    print(str1.find('you'))  # 8
    print(str1.index('you'))  # 8
    print(str1.find('abc'))  # -1(未找到)
    # print(str1.index('abc'))  # 报错!!!
    
    print(str1.find('you', 10))  # 29
    print(str1.find('you', 10, 26))  # -1
    
    # rfind、rindex
    str1 = 'how are you? I am fine,thank you! and you?'
    print(str1.rfind('you'))  # 38
    print(str1.rindex('you'))  # 38
    
  6. 其他方法

    # 1).casefold()无关大小写
    str1 = 'asdASDUH5456'
    str2 = str1.casefold()
    print(str2)
    # 2)填充
    # center、rjust、ljust、zfill
    # 'abc' -> 'xxabcxx'、'xxxxabc'、'abcxxxx'、'0000abc'
    str1 = 'abc'
    print(str1.center(7, '+'))  # '++abc++'
    print(str1.rjust(7, '+'))  # '++++abc'
    print(str1.ljust(7, '+'))  # 'abc++++'
    print(str1.zfill(7))  # '0000abc'
    # 3)count() - 统计字符或者子串个数
    str1 = 'mnabcmnmn123mnkplmn'
    print(str1.count('a'))  # 1
    print(str1.count('mn'))  # 5
    # 4)endswith() - 是否以什么结尾
    # startswith() - 是否以什么开头
    str1 = 'mnabcmnmn123mnkplmn'
    print(str1.endswith('mn'))  # True
    print(str1.startswith('mn'))  # True
    # 5)format(字符串),字符串拼接
    name = '小明'
    age = 18
    # 'xxx今年xx岁'
    result = str.format('{}今年{}岁!', name, age)
    print(result)  # 小明今年18岁!
    result = str.format('{0}今年{1}岁!{0}{1}', name, age)
    print(result)  # 小明今年18岁!小明18
    # 6)format_map(字典)
    result = '{name}今年{age}岁'.format_map({'name': '小明', 'age': 18})
    print(result)  # 小明今年18岁
    # 6)isdecimal()、isdigit()、isdecimal()
    print('2211'.isdecimal())  # True
    print('21ad'.isdecimal())  # False
    print('2211一'.isdecimal())  # False
    print('2341'.isdigit())  # True
    print('2342asd'.isdigit())  # False
    print('2211一'.isdecimal())  # False
    print('2341'.isnumeric())  # True
    print('2342asd'.isnumeric())  # False
    print('2211一⑤Ⅲ'.isnumeric())  # True
    str1 = '722dhaodiha++*-*4564'
    str2 = ''
    for i in str1:
        if i.isdigit():
            str2 += i
    print(str2)  # 7224564
    # .islower(),.isupper() - 字符串是否全为大写或者小写
    print('x'.islower())  # True
    print('xadsad'.islower())  # True
    print('X'.isupper())  # True
    print('GASDUH'.isupper())  # True
    # .upper(),.lower() - 大小写转换
    # 7) maketrask、translate
    str1 = '245adsadgh6532jeuif'
    # '245adsadgh6532jeuif'->'二四五adsadgh六五三二jeuif'
    # 创建一个映射表
    table = str.maketrans('1234567890', '一二三四五六七八九零')
    # 根据映射表的对应关系替换字符串中的相关字符
    result = str1.translate(table)
    print(result)  # 二四五adsadgh六五三二jeuif
    # 星期一
    # 星期7 -> 星期天
    str1 = '星期1,星期2,星期3,星期4,星期5,星期6,星期7'
    table = str.maketrans('1234567', '一二三四五六天')
    result = str1.translate(table)
    print(result)  # 星期一,星期二,星期三,星期四,星期五,星期六,星期天
    

字符串格式化

​ 如何解决字符串内容变化的问题

  1. 字符串拼接

    message = name + '今年' + str(age) + '岁!'
    print(message)
    money = 15000
    # xxx今年xx岁!月薪:xxxx元
    message = name + '今年' + str(age) + '岁!月薪:' + str(money) + '元'
    print(message)
    
  2. 格式字符串

    语法:
    格式字符串:包含一个或者多个格式占位符的字符串 % (数据1, 数据2, 数据3, …)
    说明:()中的数据必须和前面字符串中的占位符一一对应。如果只需要一个数据,那么()可以省略
    常用的字符串占位符
    %s - 可以给任何类型的数据占位(字符串占位符)
    %d - 只能给数字数据占位(整数占位符)
    %f - 只能给数字数据占位(浮点数占位符,默认保留6位小数)
    %.Nf - 只能给数字数据占位(浮点数占位符,保留N位小数)

    # xxx今年xx岁!月薪:xxxx元
    message = '%s今年%d岁!月薪:%.2f元' % (name, age, money)
    print(message)
    result = '%s%s%s' % ('abc', 12, [10, 20])
    print(result)  # abc12[10, 20]
    result = '%d-%d' % (19, 2.34)
    print(result)  # 19-2
    result = '%f-%f' % (19, 2.34)
    print(result)  # 19.000000-2.340000
    result = '%.2f-%.1f' % (19, 2.34)
    print(result)  # 19.00-2.3
    
  3. f-string

    1)f-string的基本用法

    f-string的基本用法:如果在字符串的最外面加了f,就可以在字符串中通过{}来给字符串提供内容:{表达式} - 表达式的结果就是对应的字符串内容

    name = '小明'
    age = 18
    money = 15000
    str1 = '姓名:{name},年龄{age}'
    print(str1)  # 姓名:{name},年龄{age}
    str2 = f'姓名:{name},年龄{age}'
    print(str2)  # 姓名:小明,年龄18
    str3 = f'a:{age}, b:{100}, c:{100 * 2}, d:{100 > 200}, c:{name * 2}, d:{name[-1]}'
    print(str3)  # a:18, b:100, c:200, d:False, c:小明小明, d:明
    # xxx今年xx岁!月薪:xxxx元
    message = f'{name}今年{age}岁!月薪:{money}元'
    print(message)  # 小明今年18岁!月薪:15000元
    

    2)f-string的参数:{提供数据的表达式:参数}

    ​ a.控制小数位数

    ​ {提供数据的表达式:.Nf}

    mcssage = f'{name}今年{age}岁!月薪:{money:.2f}元'
    print(message)  # 小明今年18岁!月薪:15000.00元
    num = 2.32
    print(f'{num:.0f}')  # 2
    

    ​ b.大金额逗号分割:{提供数据的表达式:,}

    # 1,000,000,000
    money = 16500000
    result = f'金额:{money:,}元'
    print(result)  # 金额:16,500,000元
    # {提供数据的表达式:,.Nf} - 即控制小数位数,又使用逗号
    result = f'金额:{money:,.2f}元'
    print(result)  # 金额:16,500,000.00元
    

    ​ c.小数显示成百分比:{提供数据的表达式:.N%}

    scale = 0.84
    result = f'及格率:{scale:.0%}'
    print(result)  # 及格率:84%
    

    ​ d.控制填充长度(实现center、rjust、ljust、zfill的功能)

    ​ {提供数据的表达式:字符^长度}、{提供数据的表达式:字符<长度}、{提供数据的表达式:字符>长度}

    ​ 注意:如果没有提供字符,会用空格填充

    # 'abc' -> 'xxabcxx'
    num = 3
    class_name = 'py2004'
    stu_id = f'{class_name}{num:0>3}'
    print(stu_id)  # py2004003
    stu_id = f'{class_name}{num:0>5}'
    print(stu_id)  # py200400003
    stu_id = f'{class_name}{num:0<5}'
    print(stu_id)  # py200430000
    stu_id = f'{class_name}{num:0^5}'
    print(stu_id)  # py200400300
    stu_id = f'{class_name}{num:>5}'
    print(stu_id)  # py2004    3
    
    nums = [154, 2, 5, 45, 624654, 5412, 5412]
    for i in nums:
        print(f'编号:{i:>6}')
    """
    编号:   154
    编号:     2
    编号:     5
    编号:    45
    编号:624654
    编号:  5412
    编号:  5412
    """
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值