【零基础Python专题(源码版)】篇章5·字符串str
下面列举的Python的字符串基础知识(三引号成对儿注释的内容为一个小知识点),可以直接在Pycharm运行学习:
#字符串
#字符串的存储
#a='Python'
#b="Python"
#c='''Python'''
#print(a,id(a))
#print(b,id(b)) #地址是相同的,说明Python的驻留机制对于相同的字符串,只保留一个,不会开辟新的地址空间
#print(c,id(c)) #前提是字符串必须是符合标识符的字符串,eg:abc,abc_ 反例:abc%
#符合标识符的字符串才可以共享内存,不过pycharm做了优化
'''a='abc%'
b='abc%'
print(id(a) ,id(b))'''
#字符串只在编译时驻留,而非运行时
'''a='abc'
b='ab'+'c'
c=''.join(['ab','c'])
print(id(a) ,id(b),id(c))'''
#只有[-5,256]共享内存,pycharm已优化
'''a=-5
b=-5
c=-6
d=-6
print(id(a))
print(id(b))
print(id(c))
print(id(d))'''
#强行转换为同一内存
'''import sys
a='abc%'
b='abc%'
a=sys.intern(b)'''
#字符串的操作
'''# 查找
s='hello hello'
# 查找第一次出现的位置
print(s.index('lo')) #找不到报错
print(s.find('lo')) #找不到返回-1
# 查找最后一次出现的位置
print(s.rindex('lo')) #找不到报错
print(s.rfind('lo')) #找不到返回-1'''
# 大小写转换
'''# 转大写
# 全部转大写upper()
s='hello world'
a=s.upper() #注意,字符串是不可变的,所以每次都会开辟新的内存空间
print(a)
# 转小写
s1='HELLO'
b=s1.lower()
print(b)
# 大小写反转
r1=s.swapcase()
r2=s1.swapcase()
print(r1)
print(r2)
# 第一个字符串的第一个变成大写,其余的小写
r3=s.capitalize()
print(r3)
# 把每个单词的第一个字母大写,其余的变小写
r4=s.title()
print(r4)'''
#字符串内容对齐
'''s='hello world'
#居中
print(s.center(20,'*'))
#左对齐
print(s.ljust(20,'*'))
#右对齐
print(s.rjust(20,'*'))
#右对齐,填充零
print(s.zfill(20))'''
#劈分操作
# 左侧开始劈分
'''s='hello|world'
lis=s.split() #没有写内容,默认空格为分隔符
print(lis)
lis1=s.split(sep='|') #sep指定分隔符
print(lis1)
lis2=s.split(sep='|',maxsplit=6) #指定字符串最大分隔次数
print(lis2)
# 右侧开始劈分
s='hello|world'
lis=s.split() #没有写内容,默认空格为分隔符
print(lis)
lis1=s.rsplit(sep='|') #sep指定分隔符
print(lis1)
lis2=s.rsplit(sep='|',maxsplit=6) #指定字符串最大分隔次数
print(lis2)'''
#字符串判断的相关方法
'''# 判断是否是合法字符串
s1='hello,world'
s2='helloworld'
print(s1.isidentifier())
print(s2.isidentifier())
# 判断是否为空白字符
print('\t'.isspace())
# 判断是否全部为字母
print(s1.isalpha())
print(s2.isalpha())
# 判断是否全部十进制数字组成
print(s1.isdecimal())
# 判断是否全部数字组成
print(s1.isnumeric())
# 判断是否全部数字或字母组成
print(s1.isalnum())'''
#字符串内容的替换
'''s1='hello,world,Python,Python,Python,Python'
print(s1.replace('Python','Java'))
print(s1.replace('Python','Java',2))'''
#字符串内容的连接
'''lis=['hello','java']
print('|'.join(lis))
print(''.join(lis))'''
#字符串的比较
'''print('apple'>'appl')
print('apple'>'banana') #比较的是id地址的大小 ord
# ==比较的是value, is比较的是地址
a=b='Python'
c='Pyhton'
print(a==b)
print(b==c)'''
#字符串的切片[起始:终止:步长]
'''s1='hello,python'
s2=s1[:5]
s3=s1[6:]
s4='!'
s5=s2+s3+s4
print(s5)
print(id(s1))
print(s2,id(s2))
print(id(s3))
print(id(s4))
print(id(s5))
print(s1[::2])'''
#字符串的格式化
'''# 使用占位符
name='Tom'
age=25
print('我是%s,年龄是%d' % (name,age))
# 使用{}
print('我是{0},年龄是{1}'.format(name,age))
# 使用f-string
print(f'我是{name},年龄是{age}')'''
#保留位数和宽度
'''print('%d' % 99)
print('%10d'% 99)
print('%f'% 3.1415926)
print('%.3f'% 3.1415926)
print('%10.3f'% 3.1415926)
print('--------------------------------------')
print('{0}'.format(3.1415926))
print('{0:.3}'.format(3.1415926)) #一共保留三位
print('{0:.3f}'.format(3.1415926)) #保留三位小数
print('{0:10.3f}'.format(3.1415926)) #保留三位小数,宽度为10'''
#字符串的编码转换
'''s='天涯共此时'
# 编码
print(s.encode(encoding='GBK')) #一个中文占两个字节
print(s.encode(encoding='UTF-8')) #一个中文占三个字节
# 解码
byte=s.encode(encoding='GBK')
print(byte.decode(encoding='GBK'))'''