day10 字符串进阶

字符串进阶

字符串.xxx()

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

    list1 = ['ts','tian','jackeylove','crisp']
    result = '+'.join(list1)
    print(result))       # ts+tian+jackeylove+crisp
    
    # 如果需要join的序列中的元素不是字符串,就想办法把它的元素变成字符串再join
    nums = [23, 45, 67, 89, 45]
    # '2345678945'
    # ['23', '45', '67', '89', '45']
    result = ''.join([str(x) for x in nums])
    print(result)       # '2345678945'
    
  2. 字符串1.split(字符串2) 将字符串1中所有的字符串2作为切割点对字符串进行切割,返回包含切割后每一小段对应的字符串的列表。

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

    str1 = 'abcmn123mnkplmn##'
    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', 'ABC')
    print(result)   # ABCabcABCABC123ABCkplABC##ABC
    
    result = str1.replace('mn', 'AB', 3)
    print(result)   # ABabcABAB123mnkplmn##mn
    
  4. 字符串.strip() 删除字符串左右两端的空白字符。

    字符串.rstrip() 删除字符串右两端的空白字符。

    字符串.lstrip() 删除字符串左两端的空白字符。

    str1 = '\n\t        小 明\n\t         '
    print(str1)  
    #	        小 明
    result = str1.strip()
    print(result)  
    #小 明
    
    str1 = '//小明'
    result = str1.strip('/')
    print(result)
    #小明
    
  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, 开始下标, 结束下标)

    字符串1.rfind 从右向左查第一个出现的。

    字符串1.rindex 从右向左查第一个出现的。

    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))     # 30
    print(str1.find('you', 10, 26))     # -1
    
    print(str1.find('you', 10))     # 30
    
  6. 字母大小写转换。

    print('abcMN233'.casefold())  # abcmn233 字符串内大写字母大写转小写
    print('b'.upper())  # B 小写转大写
    print('B'.lower())  # b 大写转小写
    
  7. 给定字符串放于指定位置。

    # 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'
    
  8. 计算字符串中某元素的个数。

    str1 = 'mnabcmnmn123mnkplmn##mn'
    print(str1.count('a'))              # 1
    print(str1.count('mn'))             # 6
    
  9. 字符串1.endswith(字符串2) 字符串1开头是否为字符串2

    字符串1.startswith(字符串2) 字符串1结尾是否为字符串2

    判断开头或者结尾是否为给定字符。

    str1 = 'mnabcmnmn123mnkplmn##mn'
    print(str1.endswith('abc'))  # False
    print(str1.endswith('#mn'))  # True
    
    print(str1.startswith('ab'))  # False
    print(str1.startswith('mn'))  # True
    
  10. 字符串1.isdecimal() 字符串1是否只包含十进制字符。

    字符串1.isdigit() 字符串1是否只包含数字,该函数仅对0和正整数有用。

    字符串1.isnumeric() 字符串1是否只有数字组成。

    print('2323'.isdecimal())           # True
    print('232a3'.isdecimal())          # False
    print('23239一'.isdecimal())         # False
    
    print('23211'.isdigit())            # True
    print('232+11'.isdigit())           # False
    print('2323一'.isdigit())           # False
    
    print('2323'.isnumeric())           # True
    print('232a3'.isnumeric())          # False
    print('2323一十百万Ⅱ拾Ⅲ'.isnumeric())          # True
    

字符串格式化

  1. 字符串拼接

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

    常用的字符串占位符:
    %s  -   可以给任何类型的数据占位(字符串占位符)
    %d  -   只能给数字数据占位(整数占位符)
    %f  -   只能给数字数据占位(浮点数占位符, 默认保留6位小数)
    %.Nf  - 只能给数字数据占位(保留N位小数)
    
    name = '小花'
    age = 25
    money = 15000
    message = '%s今年%d岁!月薪:%.2f元' % (name, age, money)
    print(message)  # 小花今年25岁!月薪:15000.00元
    
    result = '%s%s%s-%s' % ('abc', 12, [10, 20], 3.456)
    print(result)  # abc12[10, 20]-3.456
    
    result = '%d-%d' % (12, 2.34)
    print(result)  # 12-2
    
  3. f-string 如果在字符串的最外面加了f,就可以在字符串中通过{}来给字符串提供内容:{表达式} - 表达式的结果就是对应的字符串内容。

    name = '小明'
    age = 18
    money = 15000
    
    str1 = '姓名:{name}, 年龄:{age}'
    print(str1)     # '姓名:{name}'
    
    str2 = f'姓名:{name}, 年龄:{age}'
    print(str2)     # '姓名:小明'
    
    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:明
    
    message = f'{name}今年{age}岁!月薪:{money}元'
    print(message)  # 小明今年18岁!月薪:15000元
    
  4. f-string的参数: {提供数据的表达式:参数}。

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

    大金额逗号分隔: {提供数据的表达式: ,}。

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

    money = 672828279
    result = f'余额:{money:.2f}元'
    print(result)  # 余额:672828279.00元
    
    money = 165009000
    result = f'金额:{money:,}元'
    print(result)       # 金额:165,009,000元
    
    scale = 0.84
    result = f'及格率:{scale:.1%}'
    print(result)  # 及格率:84.0%
    

    控制填充长度(实现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}'        # 'xxx6xxx'
    print(result)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值