之前我们学习过一个不可变的序列叫元组,今天我们探讨的字符串,也是一个不可变序列。
1. 字符串的创建
一个概念: 字符串的驻留机制
那什么是字符串的驻留机制呢?
意思是: 仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时候,不会开辟新的空间,而是把该字符串的地址重新赋值给新建的变量。
1) 字符串的定义
# 作者:互联网老辛
# 开发时间:2021/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
# 作者:互联网老辛
# 开发时间:2021/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() 把字符串中所有的字符都转化成大写字母(会产生新的字符串对象)
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
a=s.upper()
print(s)
print(a)
- lower() 把字符串中所有的字符都转换成小写字母
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
a=s.lower()
print(s)
print(a)
输出结果:
hello,ITlaoxin
hello,itlaoxin
swapcase() 把字符串中所有的大写字母转换成小写字母,把所有的小写字母转换成大写字母
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
a=s.swapcase()
print(a,id(a))
print(s,id(s))
- capitalize() 把第一个字符转换成大写,把其余的字符转换成小写
- tilele( )把每个单词的第一个字符转换成大写,把每个读单词的剩余字符转换成小写
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
a=s.title()
print(a)
b) 字符串内容对齐操作
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
print(s.center(20,'*'))

一共14个字符,定义20个字符,左右各三个
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
print(s.ljust(20,"*"))

如果不写* ,默认是空格
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
s="hello,ITlaoxin"
print(s.rjust(20,"*"))

这种方式会用0orld,itlaoxin
没有指定结束位置,会切到最后
step是指定步长
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
a='hello,world,itlaoxin'
print(a[1:8:2]) #el,o
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
a='hello,world,itlaoxin'
print(a[1:8:2])
print(a[::2]) #hlowrdiloi
h) 格式化字符串
为什么要格式化字符串呢?
字符串的拼接会产生新的Id,会造成空间浪费, 这个时候就需要使用字符串的格式化。
格式化字符串的两种方式:
% 做占位符
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
#第一种方式%
name='互联网老辛'
age=40
print('我叫%s,今年%d岁了'%(name,age))
{} 做占位符
要使用到format()方法
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
#第一种方式%
name='互联网老辛'
age='40'
print('我叫{0},今年{1}岁了'.format(name,age))
除此之外还可以表示精读和宽度:
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
print('%d'% 99)
print('%10d'% 99)
这里的10表示的就是宽度
精度:
保留3位小数
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
print('%.3f' % 3.11516)
混合使用:
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s
print('%10.3f' % 3.11516)
%10.3f
总宽度为10,小数点保留3位
总结
到现在所有的数据类型的基本操作就介绍完了,这些应该都算是基础,接下来我们要进入到函数的章节。
到此这篇关于Python的字符串示例讲解的文章就介绍到这了,更多相关Python的字符串内容请搜索社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持社区! |