python学习9

本文详细介绍了Python中的字符串驻留机制、常用操作,包括查找、大小写转换、对齐、劈分、判断、替换、合并、比较操作以及切片。此外,还探讨了字符串的格式化输出和编码转换,内容涵盖了字符串的基础知识及其在实际编程中的应用。
摘要由CSDN通过智能技术生成

字符串

一种python中的基本数据类型,是一种不可变序列

字符串的驻留机制

在python中,不同的值被保存在字符串的驻留池之中,对于相同的字符串,python只保留其一份拷贝,在后期创建相同字符串时,不会开辟新的空间,而是将该字符串的地址赋给新创建的变量

a='yes'
b='yes'
c='yes'
#发现a,b,c的地址都是1860837363120
print(id(a))
print(id(b))
print(id(c))

注意,在交互模式下,只有符合标识符(数字字母下划线)的字符串才符合交互模式,并且数字需要在[-5,256]之间。并且字符串只在编译时驻留,运行时不驻留

而pycharm对此进行了优化

sys中的intern方法强制两个字符串指向同一个对象

字符串的常用操作

查询

index()查询子串第一次出现的地方,如果不存在子串,则返回ValueError错误

rindex()查询子串最后一次出现的地方,如果不存在子串,则返回ValueError错误

find()查询子串第一次出现的地方,如果不存在子串,则返回-1

rfind()查询子串最后一次出现的地方,如果不存在子串,则返回-1

m='yesiamsjkasia'
n='ia'
x='hh'
#查找n第一次出现在m中的位置,返回3
print(m.index(n))
print(m.find(n))
#查找n最后一次出现在m中的位置,返回11
print(m.rindex(n))
print(m.rfind(n))
#查找失败的情况,返回-1
print(m.find(x))
print(m.rfind(x))

大小写转换

upper()将字符串中所有字符转换为大写

lower()将字符串中所有字符转换为小写

swapcase()将字符串中所有大写字母转换为小写字母,小写字母转换为大写字母

capitalize()将字符串第一个字母转换为大写,其余转换为小写

title()将字符串中每个单词的首字母转换为大写,其余为小写

t='yes You are tHe best'
#YES YOU ARE THE BEST
print((t.upper()))
#yes you are the best
print((t.lower()))
#YES yOU ARE ThE BEST
print((t.swapcase()))
#Yes you are the best
print((t.capitalize()))
#Yes You Are The Best
print((t.title()))

注意,字符转换之后会产生一个新的字符串对象,即使转换之后字符串有时看起来没有变化,而原来的字符串没有被改变

字符串内容对齐 

 

t='yes You are tHe best'
j='hello'
#居中
#*****yes You are tHe best*****
#************hello*************
print(t.center(30,'*'))
print(j.center(30,'*'))
#左对齐
#yes You are tHe best*****
#hello********************
print(t.ljust(25,'*'))
print(j.ljust(25,'*'))
#右对齐
#*****yes You are tHe best
#********************hello
print(t.rjust(25,'*'))
print(j.rjust(25,'*'))
#00000yes You are tHe best
#00000000000000000000hello
print(t.zfill(25))
print(j.zfill(25))

劈分

t='yes You are tHe best'
j='hello'
#['yes', 'You', 'are', 'tHe', 'best']
print(t.split())
#['y', 's You ar', ' tH', ' b', 'st']
print((t.split('e')))
#['y', 's You ar', ' tH', ' best']
print((t.split('e',3)))
#['yes', 'You', 'are', 'tHe best']
print(t.split(maxsplit=3))

#['yes', 'You', 'are', 'tHe', 'best']
print(t.rsplit())
#['y', 's You ar', ' tH', ' b', 'st']
print((t.rsplit('e')))
#['yes You ar', ' tH', ' b', 'st']
print((t.rsplit('e',3)))
#['yes You', 'are', 'tHe', 'best']
print(t.rsplit(maxsplit=3))

 判断

 其中,对于isalpha()函数,汉字也算是由字母组成

对于isnumeric(),汉字表示的数,例如“四”、罗马数字也算数字

替换

 

t='yes no you yes you no yes'
#得到me no you me you no me
print(t.replace('yes','me'))
#得到me no you me you no yes
print(t.replace('yes','me',2))

合并

还可以使用+

lst=['yes','i','am']
#使用+进行拼贴
#yes i am
a='yes '+'i '+'am'
print(a)
#使用join函数
#yes i am
b=' '.join(lst)
print(b)
#yes+i+am
b='+'.join(lst)
print(b)

 字符串的比较操作

可以使用= != > < >= <=

比较时依次比较字符串中的原始值,可以使用ord()函数

==与is的区别:==比较的是value,is比较的是Id

切片

字符串是一种不可变类型,所以不能对其进行增删改操作,切片时将产生新的字符串对象

t='abcdefghijklmn'
#abcdefghijklmn
print(t[:])
#def
print(t[3:6])
#defghijklmn
print(t[3:])
#abcdef
print(t[:6])
#ace
print(t[:6:2])
#nmlkjihgfedcba
print(t[::-1])

格式化字符串

按一定格式输出的字符串

三种方式:使用%作为占位符(%s表示字符串,%d或%i表示整数,%f表示浮点数),或者使用{}、f

name='lili'
age=20
place='Lundon'

#my name is lili, my age is 20
print('my name is %s, my age is %d' % (name,age))
#10表示宽度
#      lili
print('%10s' % (name))
#,3表示小数精度
#4.274
print('%.3f' % 4.2736)
#同时设定宽度和精度
#     4.274
print('%10.3f' % 4.2736)

#使用{},其中数字如0,1表示索引
#my name is lili,my age is 20,and i am from Lundon
print('my name is {0},my age is {1},and i am from {2}'.format(name,age,place))
#,3表示一共三位数
#3.14
print('{0:.3}'.format(3.14128))
#,3f表示小数精度
#3.141
print('{0:.3f}'.format(3.14128))
#,3f表示小数精度,10表示宽度
#     3.141
print('{0:10.3f}'.format(3.14128))

#使用f
#my name is lili,my age is 20,and i am from Lundon
print(f'my name is {name},my age is {age},and i am from {place}')

字符串的编码转换

 编码使用encode(),解码使用decode()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值