基础语言-第十天-字符串进阶

字符串进阶

一、字符串相关方法

  • 字符串拼接

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

    字符串。(序列中的元素必须是字符串)

    # 举例
    list1 = ['后羿', '王昭君', '鲁班七号', '孙悟空']
    result = ''.join(list1)
    print(result)    # '后羿王昭君鲁班七号孙悟空'
    
    result = '+'.join(list1)
    print(result)    # '后羿+王昭君+鲁班七号+孙悟空'
    
    result = 'and'.join(list1)
    print(result)    # '后羿and王昭君and鲁班七号and孙悟空'
    
    result = '*'.join('abc')
    print(result)    # a*b*c
    

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

    nums = [223,45,67, 89, 45]
    result = ''.join([str(i) for i in nums])
    print(result)    # '22345678945'
    
  • 切割

    1.字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进

    行切割,返回包含切割后每一小段对应的字符串的列表。切割点会消失。

    str1 = 'abcmn123mnkplmn##'
    result = str1.split('mn')
    print(result)    # ['abc', '123', 'kpl', '##']
    

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

    str1 = 'abcmn123mnkplmn##'
    result = str1.split('mn', 2)
    print(result)    # ['abc', '123', 'kpl##']
    
  • 替换

    1.字符串1.replace(字符串2, 字符串3) - 将字符串1中所有的字符串2替换成

    字符串3

    str1 = 'mnabcmnmn123mnkpl##mn'
    result = str1.replace('mn', 'ABC')
    print(result)    # ABCabcABCABC123ABCkpl##ABC
    

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

    成字符串3

    str1 = 'mnabcmnmn123mnkpl##mn'
    result = str1.replace('mn', 'AB', 3)
    print(result)    # ABabcABAB123mnkpl##mn
    
  • 删除空白字符

    1.字符串.strip() - 删除字符串左右两端的空白字符

    2.字符串.rstrip() - 删除字符串右端的空白字符

    3.字符串.lstrip() - 删除字符串左端的空白字符

    str1 = '\n\t      小 明\n\t'
    print(str1)
    print('==============华丽的分割线===============')
    result = str1.strip()     
    print(result)    # 小 明
    
  • find、index

    1.字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置(以0

    开始的下标值返回),如果字符串2不存在返回-1。

    2.字符串1.find(字符串2,开始下标,结束下标) - 获取字符串1中指定范围内

    字符串2第一次出现的位置(以0开始的下标值返回-1)。

    3.字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置(以

    0开始的下标值返回),如果字符串2不存在报错。

    4.字符串1.index(字符串2,开始下标,结束下标) - 获取字符串1中字符串2第

    一次出现的位置(以0开始的下标值返回),如果字符串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'))    # 报错!substring not found
    
    print(str1.find('you', 10))    # 30
    print(str1.find('you', 10, 26))    # -1
    
  • 其他方法

    1.casefold()

    print('abcMN123'.casefold())    # abcmn123
    

    2.center、rjust、ljust、zfill -------

    ‘abc’ -> ‘xxabcxx’,‘xxxxabc’, ‘abcxxxx’, ‘0000abc’

    str1 = 'abc'
    print(str1.center(7, '+'))    # ++abc++
    print(str1.ljust(7, '*'))    # abc****
    print(str1.rjust(7, '&'))    # &&&&abc
    print(str1.zfill(7))    # 0000abc
    

    3.count - 统计字符串中xx出现的的次数

    str1 = 'mnabcmnmn123mnkpl##mn'
    print(str1.count('a'))    # 1
    print(str1.count('mn'))    # 5
    

    4.endswith、startswith

    str1 = 'mnabcmnmn123mnkpl##mn'
    print(str1.endswith('abc'))    # False
    print(str1.endswith('#mn'))    # True
    
    print(str1.startswith('ab'))    # False
    print(str1.startswith('mn'))    # True
    

    5.format、f ---- 格式化

    name = '小明'
    age = 18
    # 'xxx今年xx岁!'
    result = str.format('{}今年{}岁', name, age)
    print(result)    # 小明今年18岁
    
    result = f'{
            
            name}今年{
            
            age}岁'
    print(result)    # 小明今年18岁
    

    6.isdecimal、isdigit、isnumeric 、islower(全是小写字母)

    print('2323'.isdecimal())    # True
    print('323a3'.isdecimal())    # False
    print('2323--'.isdecimal())    # False
    print('==============华丽的分割线===============')
    print('232311'.isdigit())    # True
    print('2323+11'.isdigit())    # False
    print('2323--'.isdigit())    # False
    print('==============华丽的分割线===============')
    print('2323'.isnumeric())    # True
    print('232a3'.isnumeric())    # False
    print('2323--'.isnumeric())    # False
    
    print('hgaj'.islower())   # True
    print('x'.islower())     # True
    

    案例:

    # 输出字符串里所有数字
    str1 = '722实际上飞机22-2233=+集合289'
    for i in str1:
        if i.isdigit():
            print(i)
    

    7.maketrans、translate - 根据映射表对应的关系替换字符串中的相关

    字符

    str1 = '1727283112shanshuo2nsnk2'
    # 创建一个映射表
    table = str.maketrans('1234567890', '一二三四五六七八九零')
    # 根据映射表对应的关系替换字符串中的相关字符
    result = str1.translate(table)
    print(result)    # 一七二七二八三一一二shanshuo二nsnk二
    
    # 案例
    # 星期一
    str1 ='星期1, 星期2, 星期3,星期4, 星期5, 星期6, 星期7'
    table = str.maketrans('1234567','一二三四五六天')
    result = str1.translate(table)
    print(result)    # 星期一, 星期二, 星期三,星期四, 星期五, 星期六, 星期天
    

二、字符串格式化

解决字符串内容变化

  • 字符串拼接

    name = '小明'
    age = 18
    message = name + '今年' + str(age) + '岁!'
    print(message)    # 小明今年18岁!
    
  • 格式字符串

    1.语法:包含一个或者多个格式占位符的字符串 % (数据1,数据2,数据3,…)

    2.说明:()中的数据必须和前面字符串中的占位符一一对应,如果只需要

    一个数据,那么()可以省略

    3.常用的字符串占位符:

    %s - 可以给任何类型的数据占位(字符串占位符)

    %d - 只能给数字数据占位(整数占位符)

    %f - 只能给数字数据占位(浮点数占位符,默认保留6位小数)

    %.Nf - 只能给数字数据占位(保留N位小数)

    name = '小明'
    age = 18
    message = '%s今年%d岁!' % (name, age)
    print(message)    # 小明今年18岁!
    
    result = '%s%s%s' % ('abc', 12, [10, 20])
    print(result)    # abc12[10, 20]
    
    result = '%d-%d' % (12, 2)
    print(result)    # 12-2
    
    result = '%f-%f' % (2.3, 34)
    print(result)    # 2.300000-34.000000
    
    result = '%.2f-%.1f' % (2.3, 34)
    print(result)    # 2.30-34.0
    
  • f-string

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

    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)
    

    1.控制小数位数: {提供数据的表达式: .Nf}

    money = 672828279
    result = f'余额:{
            
            money:.2f}元'
    print(result)    # 余额:672828279.00元
    
    num = 102.3447
    result = f'个数:{
            
            num:.0f}'
    print(result)    # 个数:102
    
    money = 16500
    result = f'年薪:{
            
            money*13:.2f}元'
    print(result)    # 年薪:214500.00元
    

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

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

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

    scale = 0.34
    result = f'及格率:{
            
            scale:.1%}'
    print(result)    # 及格率:34.0%
    

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

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

    {提供数据的表达式:字符<长度}、 如果没有其他字符,会用空格填充

    num = 6
    result = f'{
            
            num:0>3}'
    print(result)   # 006
    
    result = f'{
            
            num:x>7}'
    print(result)    # xxxxxx6
    
    result = f'{
            
            num:x<7}'
    print(result)    # 6xxxxxx
    
    result = f'{
            
            num:x^7}'
    print(result)    # xxx6xxx
    
    result = f'编号:{
            
            num:>7}'
    print(result)    # 编号:      6
    
    nums = [155, 1, 92, 9, 23, 899,  18, 5821, 47, 8993]
    for i in nums:
        print(f'{
            
            i:>4}')
    

猜你喜欢

转载自blog.csdn.net/simple_daytime/article/details/126090177