1.字符串一个不可变的字符序列
后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
下边代码内存地址相同
a='python'
c='''python'''
d='python'
print(id(a))
print(id(c))
print(id(d))
驻留机制的几种情况:
字符串的长度为0或者1时;
符合标识符的字符串(字母数字下划线);
只在编译时进行驻留,不是运行的时候;
[-5,256]之间的整数数字。
下方代码因为含有非标识符,所以标识不同,注意只是编译的时候不同,不是运行的时候
在进行字符串拼接时,建议使用str类型的join的方法,不是+法,因为join方法先计算出字符的长度,再进行拷贝,值更新一次对象,效率比加法的时候高
2.字符串的查询操作
Index()函数:
查找子串第一次出现的位置,如果子串不存在,则显示valueError
rindex()函数:
查找子串最后一次出现的位置,如果查找的子串不存在,则显示valueError
推荐使用以下两种:
find()函数:
查找子串第一次出现的位置,如果查找的子串不存在,返回-1
rfind()函数:
查找子串最后一次出现的位置,如果字串不存在,则返回-1。
3.字符串大小写转换
upper()函数:
把所有字符都变成大写字符
lower()函数:
把所有字符变成小写字符
swapcase()函数:
把字符串中的大写字母转成小写字母,把所有小写字母转成大写字母
capitalize()函数:
把第一个字符转换成大写,把其余字符转化成小写
title()函数:
每个单词的第一个字符转换成大写,把每个单词的剩余字符转换成小写
4.字符串内容对齐操作
center()函数:
居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串
ljust()函数:
左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串
rjust()函数:
右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回原字符串
zfill()函数:
右对齐,左边用0填充,该方法只接受一个参数,用于指定字符串的宽度,如果设置宽度小于实际宽度则返回原字符串
注意此时的填充
5.字符串的劈分操作
split()函数:
返回的值是一个列表
通过参数sep来指定劈分符
通过参数maxsplit来指定最大的劈分次数
rsplit()函数:
从字符的右边开始劈分
6.字符串判断方法
isdentifier()函数:
判断字符串是不是合法的,合法则包括字母数字下划线
isspace()函数:
判断字符是否全部由空白字符组成
Isalpha()函数:
判断字符都是由字母组成
Isdecimal()函数:
判断字符串是否都是由十进制数组成
Isnumeric()函数:
判断指定的字符串是否全部由数字组成,认为罗马数字也是数
Isalnum()函数:
判断字符串是否全部由字母和数字组成,罗马数字也是数
7.字符串的替换与合并
replace()函数:
替换前的字符串不发生变化。第三个参数指定最大替换次数。产生了一个新对象
join()函数:
将列表或元组的字符串合成一个字符串
8.字符串的比较
比较规则:先比较两个字符串的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直至两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较
比较原理:两字符比较时,比较的是原始值,调用内置函数ord即可,chr可以通过数字得到对应字符
==比较的是值,is比较的是id即标识
9.字符串切片
切片操作将产生新的对象
以下代码从-6开始一直到最后一个元素,注意只是索引从-6开始,并不是到反向的最后一个
10.格式化字符串
方式一:
%作为占位符
%s——字符型,%i或者%d——整数,%f——浮点数
name='张三'
age=20
print('我叫%s,今年%d'%(name,age))
方式二:
{}作为占位符
print('我叫{0},今年{1}岁了'.format(name,age))
print(f'我叫{name},今年{age}suil')
控制精度:
下方的.3代表的不是三位小数而是三位数
加上f才代表是三位小数
同时设置宽度为10,一共三位小数
11.编码与解码
编码:
GBK格式,一个中文占两个字节
UTF-8格式,一个中文占三个字节
解码:
decode()函数进行解码