一、字符串
字符串也是基本数据类型,是一个不可变的字符序列,字符串可以用单引号,双引号,三引号进行定义。
字符串的驻留机制,简而言之,就是相同的字符串只保留一个,后续创建相同字符串的时候,id不变,也就说没有分配新的内存空间。
a='python'
b="python"
c='''python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
运行结果
由运行结果可知,创建与之前相同的字符串并没有分配新的内存空间。
二、字符串的查询
(1)index(),查找子串第一次出现的位置,如果找不到,就报错ValueError。
#字符串的查找操作
s='python,python'
print(s.index('py'))
# print(s.find('py'))
# print(s.rindex('py'))
# print(s.rfind('py'))
#
print(s.index('a'))
# print(s.find('a'))
# print(s.rindex('a'))
# print(s.rfind('a'))
运行结果
(2)rindex(),查找子串最后一次出现的位置,如果找不到,就报错ValueError。
#字符串的查找操作
s='python,python'
# print(s.index('py'))
# print(s.find('py'))
print(s.rindex('py'))
# print(s.rfind('py'))
# print(s.index('a'))
# print(s.find('a'))
print(s.rindex('a'))
# print(s.rfind('a'))
运行结果
(3)find(),查找子串第一次出现的位置,如果找不到,返回-1。
#字符串的查找操作
s='python,python'
# print(s.index('py'))
print(s.find('py'))
# print(s.rindex('py'))
# print(s.rfind('py'))
# print(s.index('a'))
print(s.find('a'))
# print(s.rindex('a'))
# print(s.rfind('a'))
运行结果
(4)rfind(),查找子串最后一次出现的位置,如果找不到,返回-1。
#字符串的查找操作
s='python,python'
# print(s.index('py'))
# print(s.find('py'))
# print(s.rindex('py'))
print(s.rfind('py'))
# print(s.index('a'))
# print(s.find('a'))
# print(s.rindex('a'))
print(s.rfind('a'))
运行结果
三、字符串的大小写操作转换
由于字符串是不可变序列,所以再经过大小写操作之后,字符串的id发生了变化,也就是产生了一个新的字符串。
(1)upper(),把所有的字符转为大写字母
s='hello,python'
print(s.upper())
运行结果
(2)lower(),把所有的字符转为小写字母
s='HELLO,python'
print(s.lower())
运行结果
(3)swapcase(),大写变小写,小写变大写
s='HELLO,python'
print(s.swapcase())
运行结果
(4)capitalize(),第一个字母大写,其他小写
s='HELLO,python'
print(s.capitalize())
运行结果
(5)title(),把每个单词的第一个字符转换为大写,每个单词剩余的字符转换为小写。
s='HELLO,python'
print(s.title())
运行结果
四、字符串的对齐操作
(1)center(),居中对齐
(2)ljust(),左对齐
(3)rjust(),右对齐
在(1)(2)(3)中,一般第一个参数是指定宽度,第二个参数是填充符,如果没有规定填充符的话,默认是空格。
(4)zfill(),右对齐,左边用0填充,这个里面只有一个参数,用于指定字符串的宽度。
在1)(2)(3)(4)中,如果设置的宽度小于字符串的长度,那么运行结果是字符串本身。
s='hello,python'
print(s.center(20,'*'))
print(s.ljust(20,'*'))
print(s.rjust(20,'*'))
print(s.zfill(20))
print(s.center(10,'*'))
运行结果
四、字符串的分割
split()左分割和rsplit()右分割。
split是从左边开始分割,默认分割符是空格,也可以指定分割符,同时也可以指定最大分割次数,那么剩余的部分就会成为单独的一部分。
rsplit与split的区别就在于从哪边进行分割,其他地方并无差别。
分割操作的返回值是列表。
#分割
s='hello python hello'
print(s.split(),type(s.split()))
s1='hello#python#hello'
print(s1.split(sep = '#'))
print(s1.split(sep = '#',maxsplit=1))
print(s.rsplit())
s1='hello#python#hello'
print(s1.rsplit(sep = '#'))
print(s1.rsplit(sep = '#',maxsplit=1))
运行结果
五、字符串判定操作
(1)isidentifier(),判断是否是合法的标识符
#字符串的判定操作
s='hello world'
print(s.isidentifier())
运行结果
因为有空格,不是合法的标识符
(2)isspace(),判断字符串是否全部是由空白字符组成,例如回车、空格和制表符。
#字符串的判定操作
s='hello world'
print(s.isspace())
运行结果
(3)isalpha(),判断字符串是否全部由字母组成。
#字符串的判定操作
s='helloworld'
print(s.isalpha())
运行结果
(4)isdecimal(),判断是否全部是由十进制的数字组成
#字符串的判定操作
s='123456'
print(s.isdecimal())
运行结果
(5)isnumeric(),判断是否全部是由数字组成
#字符串的判定操作
s='ⅠⅡⅢⅣⅤⅥⅦ'
print(s.isnumeric())
运行结果
(6)isalnum(),判断是否全由字母和数字组成
#字符串的判定操作
s='ⅠⅡⅢⅣⅤⅥⅦABCdefg'
print(s.isalnum())
运行结果
六、字符串的替换与合并
(1)字符串的替换,replace()
可以有三个参数,第一个参数是被替换的,第二个是替换的内容,第三个参数是最大被替换的次数。
#替换
s='hello,world,world'
print(s.replace('world','python'))
print(s.replace('world','python',1))
运行结果
(2)join(),合并,将列表或元组中的字符串合并成一个字符串。
lst=['hello','world','python']
t=('hello','world','python')
print(' '.join(lst))
print(' '.join(t))
运行结果
看一下如果输入的是字符串的话,输出的结果是什么
print('*'.join('python'))
运行结果
七、字符串的比较操作
需要用到运算符。比较的规则是,首先比较第一个字符,第一个字符若相同,则比较下一个,第一个字符不相同,那么后续字符将不再被比较。依次类推。
比较原理是,两个字符进行比较时,比较的是它们的原始值,使用内置函数ord可以获得字符的原始值,同理,也可以根据chr去获得原始值所对应的字符。
#比较
s1='hello'
s2='he'
print(s1>s2)
print(ord('a'))
print(chr(97))
运行结果
八、字符串的切片操作
因为字符串是不可变类型,所以字符串不具备增删改的操作,所以说切片之后的字符串是一个新的字符串,即切片操作将产生新的对象
#字符串的切片操作
s='厚德博学,追求卓越'
print(s,id(s))
s1=s[:4]
print(s1,id(s1))
s2=s[5:]
print(s2,id(s2))
s3=','
ns=s1+s3+s2
print(ns,id(ns))
运行结果
完整切片写法,s=[起始索引:结束索引:步长]
九、格式化字符串
(1)使用%作为占位符
#占位符
#使用%作为占位符
name='A'
age=28
print('我的名字是%s,我今年%d岁'%(name,age))
运行结果
(2)使用{}作占位符(format方法)或者前面加一个f
#占位符
#使用{}作为占位符
name='A'
age=28
print('我的名字是{0},今年{1}岁'.format(name,age))
#前面添加一个f
print(f'我的名字是{name},今年{age}岁')
运行结果
(3)宽度与占位符
#占位符
print('%10d'% 10)
print('0123456789')
运行结果
浮点型数据
#占位符
#保留小数点后三位
print('%.3f'%3.333333)
运行结果
十、字符串的编码与解码
编码是指将字符串转化为二进制。
解码是将二进制转化为字符串。
编码和解码的方式要相同。
s='泰酷啦'
byte=s.encode(encoding='UTF-8')
print(byte)
print(byte.decode(encoding='UTF-8'))
运行结果