这篇教程Python的字符串示例讲解写得很实用,希望能帮到您。 之前我们学习过一个不可变的序列叫元组,今天我们探讨的字符串,也是一个不可变序列。
1. 字符串的创建一个概念: 字符串的驻留机制 那什么是字符串的驻留机制呢? 意思是: 仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时候,不会开辟新的空间,而是把该字符串的地址重新赋值给新建的变量。
1) 字符串的定义# 作者:互联网老辛# 开发时间:2021/4/4/0004 6sa='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 6ss='hello,world'print(s.index('l')) #2print(s.find('l')) #2print(s.rfind('l')) #9print(s.rindex('l')) #9 这里建议大家使用find,或者rfind,因为不会报异常
2) 字符串的常用操作
a) 大小写转换 - upper() 把字符串中所有的字符都转化成大写字母(会产生新的字符串对象)
# 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"a=s.upper()print(s)print(a) - lower() 把字符串中所有的字符都转换成小写字母
# 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"a=s.lower()print(s)print(a) 输出结果:
hello,ITlaoxin hello,itlaoxin
swapcase() 把字符串中所有的大写字母转换成小写字母,把所有的小写字母转换成大写字母 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"a=s.swapcase()print(a,id(a))print(s,id(s)) - capitalize() 把第一个字符转换成大写,把其余的字符转换成小写
- tilele( )把每个单词的第一个字符转换成大写,把每个读单词的剩余字符转换成小写
# 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"a=s.title()print(a)
b) 字符串内容对齐操作# 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"print(s.center(20,'*')) 
一共14个字符,定义20个字符,左右各三个 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"print(s.ljust(20,"*")) 
如果不写* ,默认是空格 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"print(s.rjust(20,"*")) 
这种方式会用0填充 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"print(s.zfill(20)) 
c) 字符串的拆分 - split() 分割,从左边开始,默认的分割符是空格,分割完后是列表
# 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello,ITlaoxin"lst=s.split()print(lst) 输出结果: 我们可以指定分割符,用sep=‘|' 的形式 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello|ITlaoxin|gaosh"lst=s.split(sep='|')print(lst) 输出结果 ['hello,ITlaoxin']
如果这个地方我们用默认的空格会是什么结果: # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello|ITlaoxin|gaosh"lst=s.split()print(lst) 结果 ['hello|ITlaoxin|gaosh']
可以看到,因为这个字符串中没有空格,所以他就是一个元素的列表。 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="hello|ITlaoxin|gaosh"lst=s.split(sep='|',maxsplit=1)print(lst) 结果: ['hello', 'ITlaoxin|gaosh']
这里只拆分了一次。 - rsplit() 从字符右边开始拆分,默认拆分字符是空格,返回值是一个列表
maxsplit可以指定最大拆分次数 这个和split的使用方法一样,只是rsplist是从右边开始拆分,splist从左边拆分 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss="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()判断指定字符串是否全部由字母和数字组成
# 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss='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() # 作者:互联网老辛# 开发时间:2021/4/4/0004 6ss='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() # 作者:互联网老辛# 开发时间:2021/4/4/0004 6slst=['hello','java','python']print('|'.join(lst)) 结果:hello|java|python
f) 字符串的比较 使用运算符 >,>= ,<,<= ,= ,!= # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sprint('1','itlaoxin'>'laoxin')print('2','itlaoxin'>'itlaox') 结果:
False True
如果第一个字母就不相同,就比较原始值 ord() # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sprint('1','itlaoxin'>'laoxin')print('2','itlaoxin'>'itlaox')print('3','python'>'java')## 相当于print(ord('p'),ord('j')) 
第三个相当于112与106比较 g) 字符串的切片 字符串是不可变类型,不具备增删改查的操作,切片是会产生新的对象的 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sa='hello,world,itlaoxin'print(a[:5]) 输出结果: hello 不写起始位置,它会从index0开始切 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sa='hello,world,itlaoxin'print(a[6:]) #world,itlaoxin 没有指定结束位置,会切到最后 step是指定步长 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sa='hello,world,itlaoxin'print(a[1:8:2]) #el,o # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sa='hello,world,itlaoxin'print(a[1:8:2])print(a[::2]) #hlowrdiloi h) 格式化字符串 为什么要格式化字符串呢? 字符串的拼接会产生新的Id,会造成空间浪费, 这个时候就需要使用字符串的格式化。 格式化字符串的两种方式: % 做占位符 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6s#第一种方式%name='互联网老辛'age=40print('我叫%s,今年%d岁了'%(name,age)) {} 做占位符 要使用到format()方法 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6s#第一种方式%name='互联网老辛'age='40'print('我叫{0},今年{1}岁了'.format(name,age)) 除此之外还可以表示精读和宽度: # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sprint('%d'% 99)print('%10d'% 99) 这里的10表示的就是宽度 精度: 保留3位小数 # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sprint('%.3f' % 3.11516) 混合使用: # 作者:互联网老辛# 开发时间:2021/4/4/0004 6sprint('%10.3f' % 3.11516) %10.3f 总宽度为10,小数点保留3位
总结到现在所有的数据类型的基本操作就介绍完了,这些应该都算是基础,接下来我们要进入到函数的章节。 到此这篇关于Python的字符串示例讲解的文章就介绍到这了,更多相关Python的字符串内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! python 实现简单的吃豆人游戏 python基于tkinter点击按钮实现图片的切换 |