信息发布→ 登录 注册 退出

Python的字符串示例讲解

发布时间:2026-01-11

点击量:
目录
  • 1. 字符串的创建
    • 1) 字符串的定义
  • 2. 字符串的常用操作
    • 1) 查询操作
      •  a) 大小写转换
      • b) 字符串内容对齐操作
      • c) 字符串的拆分
      • d) 字符串的判断方法
  • 2) 字符串的常用操作
    • 总结

      之前我们学习过一个不可变的序列叫元组,今天我们探讨的字符串,也是一个不可变序列。

      1. 字符串的创建

      一个概念: 字符串的驻留机制
      那什么是字符串的驻留机制呢?
      意思是: 仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时候,不会开辟新的空间,而是把该字符串的地址重新赋值给新建的变量。

      1) 字符串的定义

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      a='itlaoxin'
      b="itlaoxin"
      c='''itlaoxiin'''
      print(a,b,c,id(a),id(b),id(c))

      输出结果

      可以看到ID都是一样的。

      在内存中只有一份

      几点注意事项:
      在交互模式下,能实现驻留机制的情况:

      • 字符串的长度为0 或者1时
      • 符合标识符的字符串
      • 字符串只在编译时候进行驻留,而非运行时
      • 【-5,256】之间的整数数字

       

      2. 字符串的常用操作

      关于字符串的操作,我们可以把字符串看成是关于字符的列表:

      1) 查询操作

      •  index() 查找字符串substr第一次出现的位置,如果查找的子串不存在,抛出异常
      • rindex() 查找字符串substr最后一次出现的问题,如果不存在,则报异常
      • find() 查找子串substr第一次出现的位置,不存在返回-1
      • rfind 查找子串substr最后一次出现的位置,若不存在返回 -1
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s='hello,world'
      print(s.index('l')) #2
      print(s.find('l')) #2
      print(s.rfind('l')) #9
      print(s.rindex('l')) #9

      这里建议大家使用find,或者rfind,因为不会报异常

      2) 字符串的常用操作

       a) 大小写转换

      • upper() 把字符串中所有的字符都转化成大写字母(会产生新的字符串对象)
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      a=s.upper()
      print(s)
      print(a)
      • lower() 把字符串中所有的字符都转换成小写字母
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      a=s.lower()
      print(s)
      print(a)

      输出结果:

      hello,ITlaoxin
      hello,itlaoxin

      swapcase() 把字符串中所有的大写字母转换成小写字母,把所有的小写字母转换成大写字母

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      a=s.swapcase()
      print(a,id(a))
      print(s,id(s))
      • capitalize() 把第一个字符转换成大写,把其余的字符转换成小写
      • tilele( )把每个单词的第一个字符转换成大写,把每个读单词的剩余字符转换成小写
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      a=s.title()
      print(a)

      b) 字符串内容对齐操作

      • center() 居中对齐
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      print(s.center(20,'*'))

      一共14个字符,定义20个字符,左右各三个

      • ljust() 左对齐
      
      
      
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      print(s.ljust(20,"*"))

      如果不写* ,默认是空格

      • rjust 右对齐
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      print(s.rjust(20,"*"))

      • zfill 右对齐

      这种方式会用0填充

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      print(s.zfill(20))

      c) 字符串的拆分

      •  split() 分割,从左边开始,默认的分割符是空格,分割完后是列表
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello,ITlaoxin"
      lst=s.split()
      print(lst)

      输出结果:

      我们可以指定分割符,用sep=‘|' 的形式

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello|ITlaoxin|gaosh"
      lst=s.split(sep='|')
      print(lst)

      输出结果

      ['hello,ITlaoxin']

      如果这个地方我们用默认的空格会是什么结果:

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello|ITlaoxin|gaosh"
      lst=s.split()
      print(lst)

      结果

      ['hello|ITlaoxin|gaosh']

      可以看到,因为这个字符串中没有空格,所以他就是一个元素的列表。

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello|ITlaoxin|gaosh"
      lst=s.split(sep='|',maxsplit=1)
      print(lst)

      结果:

      ['hello', 'ITlaoxin|gaosh']

      这里只拆分了一次。

      • rsplit() 从字符右边开始拆分,默认拆分字符是空格,返回值是一个列表

      maxsplit可以指定最大拆分次数

      这个和split的使用方法一样,只是rsplist是从右边开始拆分,splist从左边拆分

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s="hello|ITlaoxin|gaosh"
      lst=s.split(sep='|',maxsplit=1)
      print(lst)
      
      lst1=s.rsplit(sep='|',maxsplit=1)
      print(lst1)

      结果如图所示:

      d) 字符串的判断方法

      • isidentifier() 判断指定的字符串是否是合法的标识符
      • isspace() 判断指定的字符串是否全部由空白字符组成(回车,换行,水平指制表符)
      • issalpha() 判断字符串是否全部由字母组成
      • isdecimal( )判断指定字符串是否全部是十进制组成
      • isnumeric() 判断指定的字符串全部由数字组成
      • isalnum()判断指定字符串是否全部由字母和数字组成
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s='hello,world,python'
      print('1',s.isidentifier())
      print('2','hello'.isidentifier())
      print('3','\t'.isidentifier())
      print('4','abc'.isspace())
      print('5','abc'.isalpha())
      print('6','1'.isspace())
      print('7','123'.isnumeric())
      print('8','abc123'.isalnum())
      print('9','123abc!'.isalnum())

      e) 字符串的其他操作 字符串的替换replace()

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      s='hello,world,python'
      print(s.replace('python','itlaoxin'))
      s1='hello,python,python ,python'
      print(s1.replace('python','itlaoxin',2))

      结果:

      hello,world,itlaoxin
      hello,itlaoxin,itlaoxin ,python

      字符串的合并 join()

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      lst=['hello','java','python']
      print('|'.join(lst))

      结果:hello|java|python

      f) 字符串的比较

      使用运算符 >,>= ,<,<= ,= ,!=

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      print('1','itlaoxin'>'laoxin')
      print('2','itlaoxin'>'itlaox')

      结果:

       False
       True

      如果第一个字母就不相同,就比较原始值 ord()

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      print('1','itlaoxin'>'laoxin')
      print('2','itlaoxin'>'itlaox')
      print('3','python'>'java')
      ## 相当于
      print(ord('p'),ord('j'))

      第三个相当于112与106比较

      g) 字符串的切片

      字符串是不可变类型,不具备增删改查的操作,切片是会产生新的对象的

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      a='hello,world,itlaoxin'
      print(a[:5])

      输出结果:
      hello

      不写起始位置,它会从index0开始切

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      a='hello,world,itlaoxin'
      print(a[6:]) #world,itlaoxin

      没有指定结束位置,会切到最后

      step是指定步长

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      a='hello,world,itlaoxin'
      print(a[1:8:2]) #el,o
      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      a='hello,world,itlaoxin'
      print(a[1:8:2])
      print(a[::2]) #hlowrdiloi

      h) 格式化字符串

      为什么要格式化字符串呢?
      字符串的拼接会产生新的Id,会造成空间浪费, 这个时候就需要使用字符串的格式化。

      格式化字符串的两种方式:
      % 做占位符

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      #第一种方式%
      
      name='互联网老辛'
      age=40
      print('我叫%s,今年%d岁了'%(name,age))

      {} 做占位符

      要使用到format()方法

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      #第一种方式%
      
      name='互联网老辛'
      age='40'
      print('我叫{0},今年{1}岁了'.format(name,age))

      除此之外还可以表示精读和宽度:

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      print('%d'% 99)
      
      print('%10d'% 99)

      这里的10表示的就是宽度

      精度:
      保留3位小数

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      print('%.3f' % 3.11516)

      混合使用:

      # 作者:互联网老辛
      # 开发时间:2025/4/4/0004 6s
      print('%10.3f' % 3.11516)

      %10.3f
      总宽度为10,小数点保留3位

      总结

      到现在所有的数据类型的基本操作就介绍完了,这些应该都算是基础,接下来我们要进入到函数的章节。

      在线客服
      服务热线

      服务热线

      4008888355

      微信咨询
      二维码
      返回顶部
      ×二维码

      截屏,微信识别二维码

      打开微信

      微信号已复制,请打开微信添加咨询详情!