1.str的索引、切片
(1)按照索引取值:
s1[index](取出来的类型都是str)
从左至右有顺序,下标,索引(标志从0开始 0123......)
比如:
s1 = 'python全栈22期'
s2 = s1[0]
print(s2,type(s2)) #p <class 'str'>
s3 = s1[2]
print(s3) #t
s4 = s1[-1]
print(s4) #期
(2)按照切片取值(顾头不顾尾)
s1[start_index : end_index+1](第一位是0时可以省略不写)
比如:
s1 = 'python全栈22期'
s5 = s1[0:6]
s5 = s1[:6]
print(s5) #python(第一位开始,可省略不写;n是第5,要后延1位)
s6 = s1[6:]
print(s6) #全栈22期(一直到最后一位,最后一位可省略不写)
(3)切片步长:
s1[start_index : end_index+1:步长]
比如:
s1 = 'python全栈22期'
s7 = s1[:5:2]
print(s7) #pto(与切片原理一样,加入了步长,可以隔一个输出下一个)
print(s1[:]) #python全栈22期 (全部输出)
(4)倒序,反向按照切片步长:
s1[start_index : end_index后延一位:步长(负的)]
比如:
s1 = 'python全栈22期'
s8 = s1[-1:-6:-1]
print(s8) #期22栈全
#思考:倒序全部取出来?
s1 = 'python全栈22期'
s9 = s1[::-1] #期22栈全nohtyp
练习:
有字符串s = "123a4b5c"
通过对s切片形成新的字符串s1,s1 = "123"
s1 = s[:3]
print(s1)
通过对s切片形成新的字符串s2,s2 = "a4b"
s2 =s[3:-2]
print(s2)
通过对s切片形成新的字符串s3,s3 = "1345"
s3 =s[:-1:2]
print(s3)
通过对s切片形成字符串s4,s4 = "2ab"
s4 =s[1:-2:2]
print(s4)
通过对s切片形成字符串s5,s5 = "c"
s5 =s[-1]
print(s5)
通过对s切片形成字符串s6,s6 = "ba2"
s6 =s[-3:0:-2]
print(s6)
2.str 字符串常用的操作方法
(不会对原字符串进行任何操作,都是产生一个新的字符串)
(1)upper (大写)lower (小写)
s1 = s.upper()
s1 = s.lower()
# 应用:
username = input('用户名')
password = input('密码')
code = 'QweA'
your_code = input('请输入验证码:不区分大小写')
if your_code.upper() == code.upper():
if username == '太白' and password == '123':
print('登录成功')
else:
print('用户名密码错误')
else:
print('验证码错误')
(2)startswith(开头) endswith(结尾)
就是判断某某开头(结尾)是否正确
s.startswith('内容')
s.endswith('内容')
比如:
s = 'taiBAifdsa'
print(s.startswith('t'))
print(s.startswith('taiBAi'))
#结果都是True,是t taiBAi 开头
(了解)加入切片:
比如:
s = 'taiBAifdsa'
print(s.startswith('B',3,6))
#结果都是True,将s切片,表示第3位到第5位(顾头不顾尾加1=6)的开头是B
(3)replace (替换)
s.replace(被替换内容,要替换的内容)
比如:
msg = 'alex 很nb,alex是老男孩教育的创始人之一,alex长得很帅'
msg1 = msg.replace('alex','太白') # 默认全部替换
msg2 = msg.replace('alex','太白',2) # 从左到右替换前2个
print(msg1)
#太白 很nb,太白是老男孩教育的创始人之一,太白长得很帅
print(msg2)
#太白 很nb,太白是老男孩教育的创始人之一,alex长得很帅
(4)strip (去除空白):空格,\n(换行符),\t(TAB键)
s.strip()
比如:
s4 = ' \n太白\t' #太白前边既有空格又有换行
print(s4)
s5 = s4.strip()
print(s5) #将空格、换行全部清除
(了解)可以去除指定的字符
比如:
s4 = 'rre太r白qsd'
s5 = s4.strip('qrsed')
print(s5)
#结果为:太r白,因为规则是:从前往后、从后往前同时进行,遇到剔除的内容就剔除,直到遇到不用剔除的内容停下,所以“太r白”中间的“r”没有剔除
(5)split(非常重点)(分割)
s.split('默认空格,或指定的分割符号或内容')
默认按照空格分割,返回一个列表
可以指定分隔符,进行分割
str——>list
比如:
s6 = '太白:女神:吴超'
l = s6.split(':')
print(l)
#结果:['太白', '女神', '吴超']
(了解)
s6 = ':barry:nvshen:wu'
print(s6.split(":",2))
#结果:['', 'barry', 'nvshen:wu'],让前2个分开,后面不分开
(6)join(非常好用)(加入)
'所要加入的内容'.join(s)
s1 = 'alex'
s2 = '+'.join(s1)
print(s2,type(s2))
#结果:a+l+e+x <class 'str'>
list——>str(列表元素必须是字符串)
比如:
l1 = ['太白', '女神', '吴超'] # 前提:列表里面的元素必须都是str类型
s3 = ':'.join(l1)
print(s3)
#结果:太白:女神:吴超
(7)count(计数)
s.count('要计数的内容')
比如:
s8 = 'sdfsdagsfdagfdhgfhgfhfghfdagsaa'
print(s8.count('a'))
#结果:5 ,即为a出现了5次
(8)format(格式化输出)
- 第一种用法:
msg = '我叫{}今年{}性别{}'.format('大壮', 25, '男')
print(msg)
#结果:我叫大壮今年25性别男
- 第二种用法:
msg = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('大壮', 25,'男')
print(msg)
#结果:我叫大壮今年25性别男我依然叫大壮
- 第三种用法:
a = 100
msg = '我叫{name}今年{age}性别{sex}'.format(age=a,sex='男',name='大壮')
print(msg)
#结果:我叫大壮今年100性别男
note:注意格式,s = ‘.....{a}....{b}......{c}...’.format(a=xxx,b=xxx,c=xxx),别忘了中间的{}
(9)is 系列
name.isalnum() #字符串由字母或数字组成
name.isalpha() #字符串只由字母组成
name.isdecimal() #字符串只由十进制组成
name.isdigit() #字符串只由十进制组成(多一个bytes类型,b'123',返回True)
比如:
s1 = input('请输入您的金额:')
if s1.isdecimal():
print(int(s1))
else:
print('输入有误')
#结果:会显示用户输入的金额,如果有非数字,会显示输入有误,结束程序
(10)in
s1 = '老男孩edu'
print('老' in s1)
print('老男' in s1)
print('老ed' in s1)
print('老ed' not in s1)
#结果:
True
True
False
True
(必须是相连的)
(11)len:获取可迭代对象的元素总个数
len(s)
比如:
s1 = '老男孩教育最好的讲师:太白'
print(len(s1))
#结果:13
练习:将’老男孩教育最好的讲师:太白0’竖着显示:
s1 = '老男孩教育最好的讲师:太白'
index = 0
while index < len(s1):
print(s1[index])
index += 1
#结果:
老
男
孩
教
育
最
好
的
讲
师
:
太
白
3.str操作方法的补充
str 补充的方法:(练习一遍就行)
-
capitalize:首字母大写,其余变小写
s1.capitalize()
-
swapcase:大小写翻转
s1.swapcase()
-
title:每个单词的首字母大写
s1.title()
-
center:是内容居中
s1.center(长度,填充的东西)
-
find:通过元素找索引,找到第一个就返回,找不到就返回-1
s1.find('a')
index:通过元素找索引,找到第一个就返回,找不到就报错
s1.index('o')
# str :补充的方法练习一遍就行。
s1 = 'taiBAi'
# capitalize 首字母大写,其余变小写
print(s1.capitalize())
# swapcase 大小写翻转
print(s1.swapcase())
# title
msg= 'taibai say3hi'
print(msg.title()) #每个单词的首字母大写
s1 = 'barry'
# 居中
print(s1.center(20))
print(s1.center(20,'*'))
# find :通过元素找索引,找到第一个就返回,找不到 返回-1
# index:通过元素找索引,找到第一个就返回,找不到 报错
print(s1.find('a'))
print(s1.find('r'))
print(s1.find('o'))
print(s1.index('o'))
来源:oschina
链接:https://my.oschina.net/u/4296609/blog/3551633