Python3学习笔记_字符串_20200416
⑧ 字符串:以引号括起来的数据类型就是字符串
引号可以是:
单引号(只能是单行字符串)
双引号(只能是单行字符串)
三引号(可以是多行字符串,三引号可以是三个单引号,也可以是三个双引号)
【三引号需要用到的时候为字符串,不用的即为注释】
字符串操作:
1、字符串运算:成员运算 in/not in
a='hello python' b="he" print(b in a)
2、len()--获取字符串的自然长度
3、连接操作:+,要相同的的数据类型【字符串的拼接】
a='hello python' b="~" print(a+b)
4、重复操作:*,后面加数字【字符串的重复次数】
a='hello python' print(a*2)
5、索引操作:获取某一个元素
表示方法:str[index]-index是从0开始的,不是从1开始的
超出索引范围的,报错:indexError
负数从-1开始,从右边开始取
a='hello python' print(a[5])
6、切片操作:获取多个元素------重点
取左不取右【左闭右开】
超出范围的不报错,依次取到最后
表示方法:str[start:end:step]
默认step为1,可以省略步长
start可以省略,表示索引为0或-1,即最开始的地方开始取
end可以省略,表示一直取到最后
name[1:] vs name[1:-1]的区别?--name[1:] 可以取到最后一个值,name[1:-1]取不到最后一个值
start和end可以同时省略,全部取完,从开始到最后
print(name[:]) 和 print(name)的区别?---name[:]可以复制原来的文本
start>end ,开始位置>结束位置,取不到结果,因为默认步长为1,从左向右取,但是start>end是从右向左取的,两个命令不知道听谁的,所以取不到结果
print(name[3:0])
print("打印结果:{}".format(name[3:0]))
start>end ,开始位置>结束位置,取不到结果时,可以将step设为-1
print(name[3:1:-1])
print("打印结果:{}".format(name[3:0:-1]))
start<end,step为-1,同样取不到结果,因为还是两个命令,不知道听谁的
print(name[2:4:-1])
step为负数,表示从右向左取
start,end,step,全部是负数:--可以取到结果
print(name[-2:-4:-1])
总结:什么时候才能取到数
1、判断end-start是正数还是负数
2、判断step是正数还是负数
3、end-start是正数,step也为正数,则可以取到;end-start是负数,step也为负数则可以取到
a='hello python' print(a[2:4:2])
倒序显示:print(a[::-1])
7、字符串格式化输出:好处是变量可以是用户自己输入的
name=input("请输入用户名:")
age=input("请输入用户年龄:")
gender=input("请输入用户性别:")
---print("""
用户名:{}
年龄:{}
性别:{}
""".format(name,age,gender))
---print("""
用户名:{}
年龄:{}
性别:{}
""".format(name,age,gender,name)) #再加一个变量name也是OK的,没问题,不会出错
----print("""
用户名:{}
年龄:{}
性别:{}
兴趣:{}
""".format(name,age,gender)) #这样的话就会出错
----print("""
用户名:{0}
年龄:{1}
性别:{2}
""".format(name,age,gender)) #这样输入索引也是可以的
----print("""
用户名:{2}
年龄:{1}
性别:{0}
""".format(name,age,gender)) #这样加了数字的话表示索引,按照索引取值
----print("""
用户名:{2}
年龄:{}
性别:{2}
""".format(name,age,gender)) #这样的话就会出错,所以索引值要传都传,要不传都不传,指令要是明确的
----print("""
用户名:{name}
年龄:{age}
性别:{name}
""".format(name,age,gender)) #这样的话是不行的,会报错
----print("""
用户名:{username}
年龄:{nianling}
性别:{sex}
""".format(username=name,nianling=age,sex=gender)) #这样的话也是可以的,一般情况下不用,除非加的东西太多了,怕记不住,数不清索引是多少,就一一对应的加上,这样就知道要传的参数是哪个, 一般适用于变量比较多的情况
扩展:
name='lemon'
age=18
1》%s-->字符串格式输出
+可以用来进行拼接,但是只能是相同类型的进行拼接,为了使不同类型的数据也能进行拼接,就用到了:%s,使用%s会把不是str类型的数据强制转换为str类型
print('名字为:%s,年龄为:%s'%(name,age))
#输出的年龄强制转换为str
2》%d-->整型格式输出
print('名字为:%s,年龄为:%d'%(name,age))
#只有去掉引号为整数的str才可以转换为int,不然转换就会报错
3》%f-->浮点数格式输出
print('名字为:%s,年龄为:%f'%(name,age))
#年龄输出格式为浮点数
print('名字为:%s,年龄为:%.2f'%(name,age))
#年龄输出格式为保留两位小数的格式
print('名字为:%s,年龄为:%.0f'%(name,age))
#年龄输出格式为无小数部分格式
8、字符串的函数:
大写转换:a="hello worlD"
print(a.upper())
小写转换:
print(a.lower())
转换成标题形式:-将每一个单词的第一个字符大写
print(a.title())
只首字母大写:
print(a.capitalize())
是大写转为小写,是小写的转换为大写:
print(a.swapcase())
replace()---替换某个字符
a="燕子真是666"
b=a.replace("燕子","小低调") #将"燕子"替换为"小低调"
print(b)
find()----查找指定字符,得到的是找到的字符的索引开始位置
index=a.find("真是")
print(index)
find()----查找指定字符,如果找不到,返回-1,不会报错
index=a.find("是真")
print(index)
index==find---index 和 find是一样的
result=a.index("真是")
#index方法如果找不到就会报错,ValueError,值错误
result=a.index("是真")
print(result) #这样是会报错的
至于index 和 find 具体用哪一个,如果想要报错就用index,不想报错就用find
count()---查找字符出现的次数
song="爱情是一种病,厉害的爱情,忠诚的爱情"
print(song.count("爱情"))
重点:join()---字符串拼接的高级用法
split()---与join()是相反的,是把字符拆开
strip()
#haha,mimi,dada----用逗号隔开的,得到的是CSV格式
a="$".join(["haha","mimi","dada"])
print(a)
#拆开----得到的数据类型是列表
b=a.split("$")
a=",".join(["http://ss.com/login","GET","lucky","123"])
b=a.split(",")
#strip()---去掉字符串左右两边的空格
word=" fas "
c=word.strip()
print(c) #将word首尾的空格去掉
#isdigital()---是否是正整数,得到的是布尔类型
c.isdigital()
#islower()---是否是小写,得到的是布尔类型
c.islower()