Advertisement

Python字符串相关方法

阅读量:

文章目录

  • 1. 字符串相关方法
  • 2. 字符串格式化
    • 2.1 字符串拼接
    • 2.2 格式字符串
    • 2.3 f-string
      • 练习题

1. 字符串相关方法

字符串.xxx()

  1. 字符串.join(序列)
    将序列中的元素用指定字符串拼接在一起,形成一个新的字符串(序列中的元素必须是字符串)
复制代码
    list = ['后裔', '王昭君', '鲁班', '孙悟空']
    result = ''.join(list)
    print(result)
    
    result = '+'.join(list)
    print(result)
    # 后裔王昭君鲁班孙悟空
      后裔+王昭君+鲁班+孙悟空
      
    
    # 如果需要join的序列不是字符串,把元素变成字符串再join
    num = [23, 46, 223, 46, ]
    result = ''.join([str(i) for i in num])
    print(result)
    # 234622346
    
    
    result = '*'.join('abc')
    print(result)
    # a*b*c
  1. 字符串1.split(字符串2)
    将字符串1中所有字符串2作为切割点对字符串进行切割,返回的是列表,每一小段对应的是字符串的列表。
    字符串1.split(字符串2,N)
复制代码
    str1='sdfmnhjn3mn45fgh'
    result=str1.split('mn')
    print(result)
    # 返回的是列表
    # ['sdf', 'hjn3', '45fgh']
    
    str1='mnsdf97mnmn90jn3mn45fghmn'
    result=str1.split('mn')
    print(result)
    # 连续切割 产生空串
    # ['', 'sdf97', '', '90jn3', '45fgh', '']
    
    str1 = 'mnsdf97mnmn90jn3mn45fghmn'
    result = str1.split('mn', 2)
    # 前两个作为切割点,只切两次
    print(result)
    # ['', 'sdf97', 'mn90jn3mn45fghmn']
  1. 字符串1.replace(字符串2,字符串3)
    将字符串1中所有的字符串2都替换成字符串3
    字符串1.replace(字符串2,字符串3,N)
    将字符串1中前N个字符串2都替换成字符串3
复制代码
    str1 = 'mnsdf97mnmn90jn3mn45fghmn'
    result = str1.replace('mn','A')
    print(result)
    # Asdf97AA90jn3A45fghA
    
    # 删除字符串2
    result = str1.replace('mn','')
    print(result)
    # sdf9790jn345fgh
    
    # 替换前两个字符串2
    str1 = 'mnsdf97mnmn90jn3mn45fghmn'
    result = str1.replace('mn','AB',2)
    print(result)
    # ABsdf97ABmn90jn3mn45fghmn
  1. 字符串.strip() 删除字符串最前面左右两端的空白字符
    字符串.rstrip()
    字符串.lstrip()
复制代码
    # 删除无效空白
    str1 = ' 小 明 '
    result = str1.strip( )
    print(result)
    #小 明#
  1. find index
    字符串1.find(字符串2)
    获取字符串1中字符串2第一次出现的位置,如果字符串不存在返回-1
    字符串1.index(字符串2)
    获取字符串1中字符串2第一次出现的位置,如果字符串不存在报错
    字符串1.find(字符串2,开始下标,结束下标)
    获取字符串1中指定范围内字符串2第一次出现的位置
复制代码
    str1 = 'how are you? you'
    print(str1.find('you'))
    print(str1.index('you'))
    # 8 
      8

rfind reindex

复制代码
    #从后面开始找you
    str1 = 'how are you? you'
    print(str1.rfind('you'))
    print(str1.rindex('you'))
    # 13
  1. 其他方法
    1)把大写字母变成小写字母
复制代码
    print('fgfd234KDD'.casefold())
    # fgfd234kdd

2) center、rjust、ljust、zfill

复制代码
    str1 = 'abc'
    print(str1.center(7, '+'))
    print(str1.rjust(7, '+'))
    print(str1.ljust(7, '+'))
    print(str1.zfill(7))
    # ++abc++
      ++++abc
      abc++++
      0000abc

3) 统计字符串中字符出现的次数

复制代码
    str1 = 'mnsdf97mnmn90jn3mn45fghmn'
    print(str1.count('m'))
    # 5

4). 判断岂是结尾字符

复制代码
    str1 = 'mnsdf97mnmn90jn3mn45fghmn'
    print(str1.endswith('n'))
    # True
    print(str1.startswith('m'))
    # True

5)

复制代码
    name = '小明'
    age = 18
    # xxx今年xx岁
    result=f'{name}今年{age}岁'
    print(result)

6)判断纯数字

复制代码
    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

判断大小写

复制代码
    print('sss'.islower())
    # True
    print('JJHG'.isupper())
    # False

大小写转换

复制代码
    print('JJHG'.lower())
    # jjhg
    print('hjk'.upper())
    # HJK
复制代码
    str1 = '722实ss际上Mn飞机22-2233=+集H合289'
    for x in str1:
    # '0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'
    if x.isdigit() or x.isupper() or x.islower():
        print(x)

7)maketrans、translate
创建映射表,根据映射表的对应关系,数字转换成中文

复制代码
    str='12345678'
    # 对应关系表
    table=str.maketrans('1234567890','一二三四五六七八九零')
    result=str.translate(table)
    print(result)
复制代码
    str='星期1,星期7'
    # 对应关系表
    table=str.maketrans('1234567890','一二三四五六天八九零')
    result=str.translate(table)
    print(result)
    # 星期一,星期天
  1. find index
    字符串1.find(字符串2)
    获取字符串1中字符串2第一次出现的位置,如果字符串不存在返回-1
    字符串1.index(字符串2)
    获取字符串1中字符串2第一次出现的位置,如果字符串不存在报错
    字符串1.find(字符串2,开始下标,结束下标)
    获取字符串1中指定范围内字符串2第一次出现的位置
复制代码
    str1 = 'how are you? you'
    print(str1.find('you'))
    print(str1.index('you'))
    # 8 
      8

rfind reindex
从后面开始找you

复制代码
    str1 = 'how are you? you'
    print(str1.rfind('you'))
    print(str1.rindex('you'))
    # 13

2. 字符串格式化

2.1 字符串拼接

复制代码
    name = input('请输入姓名:')
    age = int(input('请输入年龄:'))
    message = name + '今年' + str(age) + '岁'
    print(message)
    xx今年xx岁

2.2 格式字符串

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

复制代码
    name = '小明'
    age = 32
    money = 15000
    message = '%s今年%d岁,月薪:%f元'%(name,age,money)
    print(message)

2.3 f-string

复制代码
    name='小明'
    money=1500
    age=18
    str=f'姓名:{name}'
    print(str)
    # 姓名:小明
复制代码
    message=f'{name}今年{age}岁'
    print(message)
    # 小明今年32岁

f-string的参数:{提供数据的表达式:参数}
a.控制小数位数:{提供数据的表达式:.Nf}

复制代码
    #保留两位小数
    money=34567
    result=f'余额:{money:.2f}'
    print(result)
    # 34567.00
    
    #删小数后
    money=34567.34
    result=f'余额:{money:.0f}'
    print(result)
    # 34567

b.大金额逗号分隔

复制代码
    money=345677898
    result=f'金额:{money:,}'
    print(result)
    # 金额:345,677,8983

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

复制代码
    scale = 0.65
    result = f'及格率:{scale:.1%}'
    print(result)
    # 65.0%

d.控制填充长度(实现center rjust ljust zfiil)的功能
{提供数据的表达式:字符>长度}

复制代码
    num=3
    # 0填充字符 3控制内容的部分 >把不够的填在前面
    study_id=f'{num:x>4}'
    print(study_id)
    # xxx3
    
    num=3
    study_id=f'{num:x<5}'
    print(study_id)
    # 3xxxx
    
    num=3
    study_id=f'{num:x^5}'
    print(study_id)
    # xx3xx

练习题

编写一个程序,交换指定字典的key和value。

复制代码
      例如:dict1={'a':1, 'b':2, 'c':3}  -->  dict1={1:'a', 2:'b', 3:'c'}  
      
    dict1 = {'a': 1, 'b': 2, 'c': 3}
    dict2 = {}
    for key, value in dict1.items():
    key, value = value, key
    dict2.setdefault(key, value)
    print(dict2)

编写一个程序,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串

复制代码
       例如: 传入'12a&bc12d-+'   -->  'abcd'  
      
    str1='12a&bc12d-+'
    str2=''
    for i in str1:
    if 'a'<=i<='z':
        str2+=i
    print(str2)

写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母

复制代码
      例如: 'abc' -> 'Abc'   '12asd'  --> '12Asd'

    
    str1 = 'abc'
    str2 = ''
    if 'a'<=str1[0]<='z':
    str2+=chr(ord(str1[0])-32)
    else:
    str2+=str1[0]+str2
    print(str2+str1[1:])

写程序实现endswith的功能,判断一个字符串是否已指定的字符串结束

复制代码
       例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True

        字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
    
    str1 = 'abcfdfbc'
    str2 = 'bc'
    print(str1[-len(str2)::]==str2)

写程序实现isdigit的功能,判断一个字符串是否是纯数字字符串

复制代码
       例如: '1234921'  结果: True

         '23函数'   结果: False
         'a2390'    结果: False
      
    str1 = '1234921'
    for i in str1:
    if not'0'<=i<='9':
        print('False')
        break
    else:
    print('True')

写程序实现upper的功能,将一个字符串中所有的小写字母变成大写字母

复制代码
    例如: 'abH23好rp1'   结果: 'ABH23好RP1'  
    
    str1='abH23好rp1'
    str2=''
    for i in str1:
    if 'a'<=i<='z':
        str2+=chr(ord(i)-32)
    else:
        str2+=i
    print(str2)

写程序获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值

复制代码
       例如: 序列:[-7, -12, -1, -9]    结果: -1

        序列:'abcdpzasdz'    结果: 'z'  
        序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98}   结果: 98

写程序实现replace函数的功能,将指定字符串中指定的旧字符串转换成指定的新字符串

复制代码
    例如: 原字符串: 'how are you? and you?'   旧字符串: 'you'  新字符串:'me'  结果: 'how are me? and me?'

    str1= 'how are you? and you?'  
    str2= 'you'  
    str3='me'
    result=str.join(str1,split(str2))
    print(result)

写程序实现split的功能,将字符串中指定子串作为切割点对字符串进行切割

复制代码
    例如:原字符串: 'how are you? and you?'   切割点: 'you'  结果: ['how are ', '? and ', '?']

    result=str1.split('you')
    print(result)

用思维导图(xmind)总结四大容器:列表、字典、元组、集合

全部评论 (0)

还没有任何评论哟~