• Python之字符串常用操作


    1、查找字符串

            除了使用index()方法在字符串中查找指定元素,还可以使用find()方法在一个较长的字符串中查找子串。如果找到子串,返回子串所在位置的最左端索引,否则返回-1。

    语法格式:str.find(sub[,start[,end]])

    其中,str表示被查找的字符串。sub表示查找的子串。start表示开始索引,缺省时为0。end表示结束索引,缺省时为字符串的长度。

    如果需要知道指定元素在序列中出现的次数,可以使用count()方法进行计数并返回。

    语法格式:sequence.count(obj)

    其中,sequence表示序列,obj表示要统计的对象。 

     例:使用index()查找《三国演义》片段中某个字首次出现的位置,然后使用count()方法统计出现的次数。

    1. ex='''次日,于桃园中,备下乌牛白马祭礼等项,三人焚香再拜而说誓曰:“念刘备、关羽、张飞,虽然异姓,既结为兄弟,则同心协力,救困扶危;上报国家,下安黎庶。
    2. 不求同年同月同日生,只愿同年同月同日死。
    3. 皇天后土,实鉴此心,背义忘恩,天人共戮!”誓毕,拜玄德为兄,关羽次之,张飞为弟。祭罢天地,复宰牛设酒,聚乡中勇士,
    4. 得三百余人,就桃园中痛饮一醉。来日收拾军器,但恨无马匹可乘。正思虑间,人报有两个客人,引一伙伴当,赶一群马,投庄上来。
    5. 玄德曰:“此天佑我也!”三人出庄迎接。原来二客乃中山大商:一名张世平,一名苏双,每年往北贩马,近因寇发而回。
    6. 玄德请二人到庄,置酒管待,诉说欲讨贼安民之意。二客大喜,愿将良马五十匹相送;又赠金银五百两,镔铁一千斤,以资器用。
    7. '''
    8. name=input('请输入人物姓名:')
    9. if name in ex:
    10. #用index()方法获取name首次出现的位置Index
    11. Index=ex.index(name)
    12. print(name,'首次出现的位置的索引为:',Index)
    13. print(name,'在此片段中出现',ex.count(name),'次')
    14. else:
    15. print(name+'没有出现在片段中')
    '
    运行

     例:使用find()方法完成上面的例子

    1. ex='''次日,于桃园中,备下乌牛白马祭礼等项,三人焚香再拜而说誓曰:“念刘备、关羽、张飞,虽然异姓,既结为兄弟,则同心协力,救困扶危;上报国家,下安黎庶。
    2. 不求同年同月同日生,只愿同年同月同日死。
    3. 皇天后土,实鉴此心,背义忘恩,天人共戮!”誓毕,拜玄德为兄,关羽次之,张飞为弟。祭罢天地,复宰牛设酒,聚乡中勇士,
    4. 得三百余人,就桃园中痛饮一醉。来日收拾军器,但恨无马匹可乘。正思虑间,人报有两个客人,引一伙伴当,赶一群马,投庄上来。
    5. 玄德曰:“此天佑我也!”三人出庄迎接。原来二客乃中山大商:一名张世平,一名苏双,每年往北贩马,近因寇发而回。
    6. 玄德请二人到庄,置酒管待,诉说欲讨贼安民之意。二客大喜,愿将良马五十匹相送;又赠金银五百两,镔铁一千斤,以资器用。
    7. '''
    8. name=input("请输入人物姓名:")
    9. Index=ex.find(name)
    10. if Index>-1:
    11. print('{}首次出现的位置索引为:{}'.format(name,Index))
    12. print('{}在此片段中出现{}次'.format(name,ex.count(name)))
    13. else:
    14. print('{}没有出现在此片段中'.format(name))
    '
    运行

    2、分割字符串

            split()方法以指定字符为分隔符,从字符串左端开始将字符串分隔成多个子串,并返回分割结果的列表。

    语法格式:str.split([delimiter,num])

    其中,str表示被分割的字符串,delimiter表示分隔符,可以是空格、换行(\n)、制表符(\t)等,缺省时为空格,num表示分割次数,缺省时全部分割。

    1. # 分割字符串
    2. strs='This is an example of cutting' #创建字符串
    3. #以空格为分隔符将字符串全部分割
    4. print(strs.split()) # ['This', 'is', 'an', 'example', 'of', 'cutting']
    5. #以空格为分隔符将字符串分割3次
    6. print(strs.split(' ',3)) # ['This', 'is', 'an', 'example of cutting']
    '
    运行

    3、连接字符串

            join()方法用于将序列中的元素以指定的字符连接,生成一个新的字符串。

    语法格式:str.join(sequence) 

    其中,str表示连接符,可以为空,sequence表示要连接的序列

    1. # 连接字符串
    2. print('-'.join('Python!')) # P-y-t-h-o-n-!
    3. #例:将字符串“Rain falls on field and tree”中的多余空格删除,即如果有连续空格只保留一个
    4. strs='Rain falls on field and tree'
    5. print('原文:',strs)
    6. split_strs=strs.split() #以空格为分割符,将strs全部分割
    7. print("以空格分割后:",split_strs) # ['Rain', 'falls', 'on', 'field', 'and', 'tree']
    8. join_strs=' '.join(split_strs) # 用空格连续分割后的字串
    9. print('只留一个空格的结果:',join_strs) # Rain falls on field and tree
    '
    运行

    4、替换字符串

            replace()方法用于将字符串中的旧字符串替换成新字符串。

    语法格式:str.replace(old,new[,max])

    其中, str表示字符串,old表示将被替换的旧字符串,new表示新字符串,用于替换old,max是可选参数,表示替换的最大次数,缺省时替换所有。

    1. #替换字符串
    2. #例:使用replace()方法将字符串“hello Python hello hello”中的“hello”替换成“HELLO”
    3. strs='hello Python hello hello'
    4. #全部替换
    5. print(strs.replace('hello','HELLO')) # HELLO Python HELLO HELLO
    6. #只替换2次
    7. print(strs.replace('hello','HELLO',2)) # HELLO Python HELLO hello
    '
    运行

     5、移除字符串的首尾字符

            strip()方法用于移除字符串首尾连续的空白字符或指定字符。

    语法格式:str.strip([chars])

    其中,str表示字符串,chars表示移除的字符串首尾指定的字符,缺省时为空格。

    1. #移除字符串的首尾字符
    2. #例:使用strip()方法移除字符串‘110This is an test0001’中的‘0’和‘1’
    3. strs='110This is an test0001'
    4. #移除两端的1
    5. print(strs.strip('1')) # 0This is an test000
    6. # print(strs.strip('0')) # 结果:110This is an test0001 说明移除两端需要按顺序移除
    7. #移除两端的1和0
    8. print(strs.strip('10')) # This is an test
    '
    运行

    6、转换字符串的大小写

            lower()方法用于将字符串中所有大写字符转换为小写,而upper()方法则用于将字符串中所有小写字符转换为大写。

    语法格式:str.lower()和str.upper() 

    1. #转换字符串的大小写
    2. #例:使用lower()方法将字符串“HELLO Python”转换为小写,再使用upper()方法将其转换为大写
    3. strs='HELLO Python'
    4. print(strs.lower()) # hello python
    5. print(strs.upper()) # HELLO PYTHON
    '
    运行

    7、检测字符串

            isalnum()方法用于检测字符串是否由字母和数字,或两种中的一种组成,如果是则返回True,否则返回False。

    语法格式:str.isalnum()

    其中,str表示要检测的字符串

    1. #检测字符串
    2. #例:使用isalnum()方法判断字符串“2022test”是否由字母和数字组成
    3. # 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
    4. strs='2022test'
    5. print(strs.isalnum()) # True
    6. str2='六'
    7. print(str2.isalnum()) # True 支持汉字
    8. str3='20 22'
    9. print(str3.isalnum()) # False 包含空格为false
    '
    运行

    isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False

    1. a='a';b='1';c='hello TOM'
    2. print(a.isalpha()) #True
    3. print(b.isalpha()) #False
    4. print(c.isalpha()) #False
    '
    运行

    isdigit():如果字符串中只包含数字则返回True,否则返回False

    1. a = 'a';b = '1';c = 'hello 123'
    2. print(a.isdigit()) #False
    3. print(b.isdigit()) #True
    4. print(c.isdigit()) #False
    '
    运行

    isspace():如果字符串中只包含空白则返回True,否则返回False

    1. a='hello';b=' '
    2. print(a.isspace()) #False
    3. print(b.isspace()) #True
    '
    运行

     小案例:判断输入的字符是否是回文串

    1. #回文串
    2. check=input('请输入需要判断的字符串:\n')
    3. flag=True #定义回文串标志,赋初始值为True
    4. low =0 #定义首字符索引,赋初始值为0
    5. high=len(check)-1 #定义尾字符索引,赋初始值为字符串的长度减1(索引为长度减1)
    6. while low
    7. if check[low]!=check[high]: #如果首字符和尾字符不一样,直接修改标志为false判定不是回文串
    8. flag=False
    9. break
    10. low+=1 #首字符向中间移动一格
    11. high-=1 #尾字符向中间移动一格
    12. if flag:
    13. print('{}是回文串'.format(check))
    14. else:
    15. print('{}不是回文串'.format(check))
    '
    运行
  • 相关阅读:
    鼠标悬停效果九
    【技术干货】宇视IPC音频问题解决步骤
    LeetCode--166. 分数到小数(C++描述)
    人工智能数学课高等数学线性微积分数学教程笔记(4. 多元函数的微分学)
    数据集成测试支持工具
    数据结构_笔记_第1章:绪论
    5.16 加载内核映像文件(2)
    Install and configure iftop
    数学老师们
    网络基础1:网络初始与网络套接字通信
  • 原文地址:https://blog.csdn.net/qq_62731133/article/details/127097202