Python学习笔记11-字符串

字符串的驻留机制

  • 字符串:在Python中字符串是基本数据类型,是一个不可变的字符序列
  • 什么叫字符串驻留机制:
    (1)字符串的长度为0或1时
    (2)符合标识符和字符串
    (3)字符串只是在编译时进行驻留,而非运行时
    (4)【-5,256】之间的整数数字
a='Python'
b="Python"
c='''Python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))

在这里插入图片描述
字符串的查询操作
(1)index():查找子串substr第一次出现的位置,如果查找的子串不存在时,就会抛出ValueError。
(2)rindex():查找子串substr最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError。
(3)find():查找子串substr第一次出现的位置,如果查找的子串不存在时,就会返回-1。
(4)rfind():查找子串substr最后一次出现的位置,如果查找的子串不存在时,就会返回-1。

#字符串的查询操作
s='hello,hello'
print(s.index('lo'))
print(s.find('lo'))
print(s.rindex('lo'))
print(s.rfind('lo') )

在这里插入图片描述

在这里插入图片描述

字符串的大小写转换操作

  • upper():把字符串中的所有字符转换成大写字母。
  • lower():把字符串中的所有字符转换成小写字母。
  • swapcase():把字符串中的所有大写字母转换成小写字母,把所有的小写字母转换成大写字母。
  • capitalize():把第一个字符转换为大写,把其余字符串转化成小写。
  • title():把每个单词的第一个字符串转化成大写,把每个单词的剩余字符串转化小写。
#字符串的大小写转换操作
s='hello,python'
a=s.upper()
print(a,id(a))
print(s,id(s))
print(s.lower(),id(s.lower()))
print(s.swapcase(),id(s.swapcase()))
print(s.title(),id(s.title())) 

在这里插入图片描述
字符串内容对齐操作

  • center():居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空|格,如果设置宽度小于实际宽度则则返回原字符串。
  • ljust():左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格如| 果设置宽度小于实际宽度则则返回原字符串。
  • rjust():右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格如果设置宽度小于实际宽度则则返回原字符串。
  • 右对齐,左边用0填充,该方法只接收-一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身。
s='hello,Python'
print(s.center(20,'*'))
print(s.center(19,'*'))
print(s.ljust(20,'*'))
print(s.ljust(20,))
print(s.rjust(20,'*'))
print(s.rjust(20))
print(s.zfill(20)) #右对齐,补0
print('-8910'.zfill(8)) 

在这里插入图片描述
字符串劈分操作

  • split():字符串的左边开始劈分,默认的劈分字符是空格字符串,返回值都是一个列表,以通过参数sep指定劈分字符串的额劈分符,通过参数maxsplit指定劈分字符串时的最大劈分次数,在金国最大次劈分之后,剩下的子串会单独作为一部分。
  • rsplit():从字符串的右边开始劈分,默认劈分字符是空格字符串,返回的值都是一个列表,以通过参数sep指定劈分字符串的劈分符,通过参数maxsplit指定劈分字符串时的最大劈分次数,在金国最大次劈分之后,剩下的子串会单独作为一部分。
s='hello world Python'
lst=s.split()
print(lst)
s1='hello|world|Python'
print(s1.split())
print(s1.split(sep='|',maxsplit=1))#分一次
s='hello world Python'
print(s.rsplit())
print(s1.rsplit('|'))
print(s1.rsplit(sep='|',maxsplit=1))

在这里插入图片描述
判断字符串的操作方法

  • isidentifier():判断指定字符串是否是合法的标识符。
  • isspace():判断指定的字符串是否全部由空白字符组成(回车,换行,水平制表符)。
  • isalpha():判断指定的字符串是否全部都由字母组成。
  • isdecimal():判断指定字符串是否全由数字组成。
  • isnumberic():判断指定的字符串是否全部由数字组成。
  • isalnum():判断指定字符串是否全由数字字母组成。
s='hello,python'
print('1',s.isidentifier())
print('2','hello'.isidentifier())
print('3','张三_'.isidentifier())
print('4','张三_123'.isidentifier()) 
print('5','/t'.isalpha())
print('6','abc'.isalpha())

在这里插入图片描述
字符串的其他操作

  • 字符串替换replace():第1个参数指定被替换的子串,第2个参数指定替换子串的字符串,该方法返回替换后得到(的字符串,替换前的字符串不发生变化,调用该方法时可以通过第3个参数指定最大替换次数。
  • 字符串合并join():将列表或元组中的字符串合并成一个字符串。
s='hello,python'
print(s.replace('python','java'))
s='hello,python,python,python'
print(s.replace('python','java',2))
lst=['hello','java','python']
print('|'.join(lst))
print(''.join(lst))
t=('hello','java','python')
print(''.join(t))
print('*'.join('python'))

在这里插入图片描述
字符串的比较操作

  • 运算符:>,>=,<,<=,==,!=
  • 比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不在被比较。
  • 比较原理:两上字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以 得到指定字符的ordinal value.与内置函数ord对应的是内置函数chr.调用内置函数chr时指定ordinalvalue可以得到其对应的字符。
print('apple'>'app')
print('apple'>'banana')
print(ord('a'),ord('b'))
print(chr(97),chr(98)) 

在这里插入图片描述
字符串的切片操作

  • 字符串是不可变类型,不具备增、删、改操作
  • 切片操作将产生新的对象
  • 切片【start: end: step】
s='hello,python'
s1=s[:5] #没有指定开始位置,所以从0开始
s2=s[6:] #没有指定结束位置,所以到最后结束
s3='!'
newstr=s1+s3+s2
print(s1)
print(s2)
print(newstr)
print(id(s))
print(id(s1))
print(id(s3))
print(id(newstr))
print(s[1:5:1])#[1,5)
print(s[::-1])

在这里插入图片描述
格式化字符中
格式化字符串的两种方式:

  • %占位符(%s→字符串,%i或%d→整数,%f→浮点数)
  • ‘我的名字叫:{0},今年{1}岁了,我真的叫:{0}’.format{name,age}
#(1) % 占位符
name='张三'
age=20
print('我叫%s,今年%d'%(name,age))
#(2) {}
print('我叫{0},今年{1}'.format(name,age))
#(3) f-string
print(f'我叫{name},今年{age}岁')
print('%10d'%99)
print('%.3f'%3.1415926)
print('%10.3f'%3.1415926)

在这里插入图片描述
字符串的编码转换

  • 编码:将字符串转化成二进制数据。
  • 解码:将bytes类型的数据转换成字符串类型。
s='天涯共此时'
print(s.encode(encoding= 'GBK') )#在GBK这种编码格式中一个中文占两个字节
print(s.encode(encoding= 'UTF-8') )#在UTF-8这种编码格式中,一个中文占三个字节
#byte代表的就是一个二进制数据
byte=s.encode(encoding= 'GBK')
print(byte.decode(encoding= 'GBK')) 
byte=s.encode(encoding= 'UTF-8')
print(byte.decode(encoding= 'UTF-8'))

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值