字符串是python中最常用的数据类型。
一、字符串定义方法
我们可以使用单引号(' ')或者双引号(" ")来创建字符串。创建字符串只要为变量分配一个值即可,可以使用print()函数显示字符串字面量。
a="123"
b="字符串"
print(a)
print(b)
a="123"
type(a)
单引号和双引号还可以同时使用,但是不可以混用
print('老师说:"好好学习,天天向上"')
print('老师说:"好好学习,天天向上'")
二、字符串的拼接和重复
1.字符串的拼接:字符串+字符串
"小明"+"小红"
x="小明"
y="小红"
x+y
2.字符串的重复:字符串*n
a="小明"
a*3
"哈喽"*3
三、字符串的切片
切片语法:str[start:stop:step]
注意:①选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。②start,stop,step都可以取负数。
1.按照位置信息进行切片
str="不知庐山真面目"
str[0]
str[3]
2.字符串是不可变的对象,内部元素不能通过切边进行改变
str="不知庐山真面目"
str[0]="好"
3.切片时包含起始位置的元素,不包含终止位置的元素
str="不知庐山真面目"
str[2:5]
4.设置步长
str="不知庐山真面目"
str[2:6:2]
5.查看字符串长度(包含元素数量)
str="不知庐山真面目"
len(str)
6.start,stop,step取负数
str="不知庐山真面目"
str[-1]
str[-5:-1]
str[-5:-1:2]
倒序
str="不知庐山真面目"
str[::-1]
步长为负数时,起始值到终止值的方向也要是反方向的
str="不知庐山真面目"
str[5:1:-2]
四、字符串的操作方法
1.find
检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
str="不知庐山真面目"
str.find("庐")
str="不知庐山真面目"
a=str.find("庐",3,6) #从第3个位置到第5个位置查找"庐",没有,返回-1
b=str.find("庐",1,5) #从第1个位置到第4个位置查找"庐",有,返回"庐"的位置2
a
b
str="不知庐山真面目"
b=str.find("庐",1,5) #为位置信息,可以用来切片
str[b]
2.count
返回 str在start和end之间 在 mystr里面出现的次数
①不进行参数限制,默认从头到尾计数
a = "ABCDEFABCD"
a.count('A')
②进行参数设置,只在指定范围内计数
a = "ABCDEFABCD"
a.count('A', 0, 5)
3.replace
把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次
其中返回的是视图,并没有在原数据上进行更改
a='ABCDEFABCD'
a.replace('A', '哈', 1)
a='ABCDEFABCD'
a.replace('A', '哈')
4.split
以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
a='ABCDEFABCD'
a.split("B")
通过参数控制切分次数
a='ABCDEFABCD'
a.split("B",1)
切分的元素不存在,不会进行切分
a='ABCDEFABCD'
a.split("H")
切分的元素在末尾,会多切出一个空字符串
a='ABCDEFABCD'
a.split("D")
5.partition
把mystr以str分割成三部分,str前,str和str后
a='ABCDEFABCD'
a.partition('EF')
6.join
mystr 中每个字符后面插入str,构造出一个新的字符串
"***".join("好好学习")
"=".join("abcdef")
7.lower和upper
lower转换 mystr 中所有大写字符为小写
upper转换 mystr 中的小写字母为大写
a="ABCDEFABCD"
a.lower()
b="qwerty"
b.upper()
8.strip
删除mystr字符串两端的空白字符,但无法去掉字符串中间的空格
c=" 您 好 "
c.strip()
想要也去掉字符串中间的空格的话用replace
c=" 您 好 "
c.replace(" ","")
五、字符串的格式化
1.format应用
print("学习要{},学习要{},学习要{},学习要{}".format("认真","专心","努力","刻苦"))
用位置一一对应进行填充
a="认真"
b="专心"
c="努力"
d="刻苦"
print("学习要{},学习要{},学习要{},学习要{}".format(a,b,c,d))
如果填充的内容比较多,而且有重复,可以把填充的内容赋值给变量,重复利用
a="认真"
b="专心"
c="努力"
d="刻苦"
print("学习要{0},学习要{1},学习要{2},学习要{2}".format(a,b,c))
用位置进行填充
a="认真"
b="专心"
c="努力"
d="刻苦"
print("学习要{A},学习要{B},学习要{C},学习要{D}".format(A=a,B=b,C=c,D=d))
通过参数控制进行填充
list1=["认真","专心","努力","刻苦"]
print("学习要{0[0]},学习要{0[1]},学习要{0[2]},学习要{0[3]}".format(list1))
通过列表进行填充
dic1 ={"a":"认真","b":"专心","c":"努力","d":"刻苦"}
print("学习要{names[a]},学习要{names[b]},学习要{names[c]},学习要{names[d]}".format(names=dic1))
通过字典填充
"{3} {0} {2} {1} {3} {0}".format("be","not","or","to")
通过位置填充
2.填充与对齐
填充常跟对齐一起使用
^ < >分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
'{:>14}'.format("江南燕")
len('{:>14}'.format("江南燕"))
print('{:^14}'.format('江南燕')) #居中,整个字符串的长度为14,不指定填充字符,用空格填充
print('{:>14}'.format('江南燕')) #右对齐
print('{:<14}'.format('江南燕')) #左对齐
print('{:*<14}'.format('江南燕')) #左对齐,用*填充
print('{:&>14}'.format('江南燕')) #右对齐,用&填充
3.精度与类型f
'{:.2f}'.format(3.1415926) #保留两位有效数字
'{:.3f}'.format(6.55433) #保留三位有效数字
'{:.0f}'.format(3.1415926) #不保留小数位数
'{:+.2f}'.format(3.1415926) #带符号的保留小数位数
'{:+.2f}'.format(-3.1415926) #不管带的符号是正号还是负号,都是在冒号和点之间添加"+"
'{:.2%}'.format(0.25) #百分位数保留小数位数,要保留几位小数就在百分号前写几
'{:.1%}'.format(0.25)
'{:>14}'.format('江南燕') #右对齐,用空格填充
'{:>10d}'.format(100) #右对齐,10表示带宽,在这里也是字符个数
'{:<7d}'.format(100) #左对齐
'{:^7d}'.format(100) #居中对齐
'{:0>10d}'.format(100) #用0填充补齐的位置 (右对齐)
'{:0>5d}'.format(52) #例如填充学号
'{:*<10d}'.format(100) #左对齐,用星号填充位置
'{:$^7d}'.format(100) #居中对齐 用$填充给位置
4.金额的千位分隔符
'{:,}'.format(1234567890)