字符串(str)
字符串, 用于存储一些少量的数据,在Pyhton当中只要是用引号引起来的就是字符串,字符串中的每个单独的字母汉字都是一个元素.
在第一天的时候咱们简单的认识了下字符串,今天我们好好的来认识一下这个让你又喜又优的字符串
我们来回忆下字符串是不是可以进行加减乘除
字符串加
a = '世界'
b = '你好'
print(a + b)
结果:
世界你好
通过刚刚我们的测试发现字符串也是可以进行加法操作的,字符串相加其实有个专业的名词 --- 字符串拼接;相加的规则就是必须都是字符串才能相加
字符串中是不能进行减法和除法操作的,通过这句话就能得知字符串是可以进行乘法操作的,我们立马来看一下:
字符串乘
a = '坚强'
print(a * 8)
结果:
坚强坚强坚强坚强坚强坚强坚强坚强
字符串的乘法就是将多个字符串拼接到一起,乘法的规则:只能是字符串和数字相乘
我们回顾完第一天的字符的内容,那就来看看咱们今天要讲的内容是什么??
字符串方法详解
全部大写
name = 'alex'
new_name = name.upper()
print(new_name)
# 把这个字符串全部变成大写
全部小写
name = 'ALEX'
new_name = name.lower()
print(new_name)
# 把这个字符串全部变成小写
应用场景:
# 字符串大小写做验证码
y_z_m = 'O98k'
y_z_m_input = input("请输入验证码(O98k)")
user = input('请输入账号:')
pwd = input('请输入密码:')
if y_z_m == y_z_m_input:
if user == 'alex' and pwd == '8520':
print('登陆成功!')
else:
print('登录失败')
else:
print('验证码错误!')
以什么开头
name = 'alex'
new_name = name.startswith('a')
if new_name:
print('是以a开头')
# 判断这是不是字符串是不是以a开头的
name = 'alex'
new_name = name.startswith('e',2,5)
if new_name:
print('是以e开头')
# 我们可以指定从哪个位置开始哪个位置结束
以什么结尾
name = 'alex'
new_name = name.endswith('x')
if new_name:
print('是以x结尾')
# 判断这是不是字符串是不是以x结尾的
name = 'alex'
new_name = name.endswith('x',2,5)
if new_name:
print('是以x结尾')
# 判断这是不是字符串是不是以x结尾的
统计出现的次数
name = 'alexdasx'
new_name = name.count('a')
print(new_name)
# 统计name这个字符串中a出现的次数
字符串替换
name = 'alexdasx'
new_name = name.replace('sx','sb',1)
print(new_name)
# 替换字符串中的内容以外 我们可以指定要替换的次数
去除头尾两边的空格 换行符/制表符
name = ' alexdasx '
new_name = name.strip() # 默认去除的头尾两端的空格,换行符,制表符 也可以自己指定
print(new_name)
# 去除头尾俩遍的空格和换行符
首字母大写
name = "meet"
name.capitalize()
每个单词的首字母大写
name = "meet"
name.title()
大小写反转
name = "meet"
name.swapcase()
统计
name = "meet"
name.count()
查找
name = "meet"
name.find() # 当查找的时候数据不存在返回-1
name = "meet"
name.index() # 当查找的时候数据不存在报错
居中
name = "meet"
name.center(20) # 居中一共占用20个位置
填充
name = "meet{},{},{}"
name1 = name.format("郭宝元","宝帅","宝哥") # 按照位置顺序填充
print(name1)
name = "meet{0},{1},{2}"
name2 = name.format("宝帅","宝哥","郭宝元") # 按照下标填充
print(name2)
name = "meet{a},{c},{b}"
name3 = name.format(a="郭宝元",b="宝帅",c="宝哥") # 按照关键字填充
print(name3)
拼接
将可迭代容器转换成字符串 字典拼接的是键
可迭代容器中的元素必须是字符串类型
lst = ["2","3","4","5"]
print('*'.join(lst))
tu = ("2","3","4","5")
print('*'.join(tu))
dic = {"key1":2,"key2":4}
print('*'.join(dic))
se = {"1","3","34"}
print('*'.join(se))
字符+
name1 = "alex"
name2 = "wusir"
print(id(name1))
print(id(name2))
print(id(name1 + name2))
字符*
name1 = "alex"
print(id(name1))
print(id(name1 * 5))
字符 + 和 * 都是开辟新的空间
分割
name = 'alexdasx'
new_name = name.split("x") # 默认以空格,换行符,制表符分隔
print(new_name)
# 也可以通过x将字符串name进行切割
name = 'alexdasx'
new_name = name.split("x",maxsplit=1) # 默认以空格,换行符,制表符分隔
print(new_name)
# 切割后的内容是一个列表
is系列
判断是不是十进制的数字,返回的是布尔值
name = 'alexdasx'
new_name = name.isdecimal()
print(new_name)
# 判断是不是十进制的数字,返回结果是布尔值
判断是不是数字和字母以及中文,返回的是布尔值
name = 'alex7dasx'
new_name = name.isalnum()
print(new_name)
# 判断是不是数字和字母以及中文,返回结果是布尔值
判断是不是字母和汉字,返回的是布尔值
name = 'alexdasx'
new_name = name.isalpha()
print(new_name)
# 判断是不是纯字母和汉字,返回的是布尔值
获取长度
目前我们写的内容还比较少,如果有一个很长很长的字符串,要是一个一个数是不是很累呢,Python给咱们提供了一个方法就是获取长度的.
长度获取示例:
name = "Meet"
print(len(name))
结果:
4
这里需要大家清楚一点的就是,len是一个公共的方法,不是字符串的方法只有用字符串.的方式使用的才是字符串的方法
我们现在能够轻松的获取到到长度,现在我有这么一个字符串 name = "Meet",请使用while循环获取到字符串中每个元素并打印,效果图入下:
字符串方法总结
upper()#将字符串全部大写
lower()#将字符串全部小写
startswith()#判断以什么开头,可以指定范围
endswith()#判断以什么结尾,可以指定范围
strip()#去除空格换行制表符,可以指定去除的字符
replace()#替换,可以指定次数
isalnum()#判断是不是数字字母汉字组成
isdigit()#判断是不是阿拉伯数字
isalpha()#判断是不是字母和汉字
isdecimal()#判断是不是十进制
len()#获取字符串的长度
split()#以空格换行制表符分割,可以指定分割符和次数
rsplit()
#从右边开始分割
count()#获取字符出现的次数
find()#查找字符在字符串中出现的次数,可以指定开始与结束,有返回索引,否则返回-1
index()#与find一样,但是如果找不到就报错
capitalize()#把字符串的首字母大写
'_'.join(s)#使用指定的字符吧字符串的每个字符分割
casefold()#与lower一样,但是lower只对ascii由效
format()#格式化输出,用{}表示
center()#返回字符串居中,空格填充的指定长度的字符串
decode()#以指定的编码格式进行解码
encode()#以指定格式进行编码,二进制
expandtabs()#将字符串中的tab键转换成空格,默认为8个
isidentifier()#判断是不是有效的puthon标识符
isspace()#判断字符串中是不是值只包含空格
isnumeric()#判读字符串是不是只包含数字字符
isprinttable()#判断是不是都是可打印的字符或字符串,可以用来查看是不是包含转义符
ljust()#与center相似,字符串左对齐,空格补充至指定长度
rjust()#与ljust相反
partition()#与split相似,但是分割后分割字符保留,返回三元字符串
splitlines()#以换行符进行分割,返回分割后的列表
swapcase()#对字符串中的大小写进行反转
字符串切片
切片
切片又是什么呢?我们先来看一个示例:
name = 'meet'
# 索引 0123
print(name[0:3])
结果:
mee
#**********
name = "今天是个好日子"
# 0 1 2 3 4 5 6
#-7-6-5-4-3-2-1
a = name[0]
b = name[1]
print(a+b)
切片
print(name[0:2]) # 顾头不顾尾 name[起始位置:终止位置]
print(name[:]) # 某个位置不指定的时候默认取最后或最前
print(name[2:5])
print(name[-2:-5])
print(name[-2:-5:-1]) # [起始位置:终止位置:步长] 步长默认为1
[第一个位置是开始:第二个位置是终止]中间必须使用分号,这样的写法就是从索引0开始获取到索引3结束
这个结果是不是和大家想的有点出入啊,大家肯定认为获取到的内容是meet,但是为什么是mee呢,因为终止的索引是不包含的获取的是这个区间的内容
想想咱们在买肉的时候,有一个块整肉,这块整肉就后边有点肥,不想要是不是就让老板给切掉了,我们就买前边的部分啊.在生活中这种神操作就是切片
我也知道你们刚接过这些东西,使用起来不是很熟悉,尤其是切片这部分,在悄悄的告诉你们个小技巧,下次当看到切片中终止位置的时候把这个数减一就ok啦
步长
步长又是什么呢?先看示例:
name = 'meet'
# 索引 0123
print(name[0:3:1])
结果:
mee
发现我在中括号中最后一个位置写了一个东西,也没什么变化,是的没有变化,因为我们不写的时候他默认就是1,我们换个数字在来看看
name = 'meet'
# 索引 0123
print(name[0:3:2])
结果:
me
这又是啥情况呢?想想我开始告诉大家的中括号里第一个参数是起始位置,第二参数是终止位置,第三个参数现在告诉大家是步长(每次走几步)
当步长设置为2的时候,咱们只需要用起始位置0加上步长2,结果也就2然后在把索引为2的找到,2在加上步长2就是4,当要查找索引4是发现终止索引就是3,
所有不会进行查找.最终的结果就是me.