目录
1、下标
2、切片
3、字符串的查找
4、字符串的修改
5、修改之大小写转换
6、修改之删除字符串空白字符
7、修改之字符串对齐
8、字符串的判断
下标又称为索引或者索引值,也就是编号。作用是通过下标能快速的找到对应的数据,都是从0开始顺序往后推
s='1234'
print(s)
print(s[0])
print(s[3])
#结果
1234
1
4
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作
语法:序列【开始位置下标:结束位置下标:步长】
注意:
1、不包含结束位置下标对应的数据,正负整数均可
2、步长是选取间隔,正负整数均可,默认步长为1
s='1234abcdefg'
print(s)
print(s[0])
print(s[3:5])
print(s[3:7])
print(s[3:7:2])
print(s[3:8:2])
#结果
1234abcdefg
1
4a #3对应的是4,5对应的是b,由于结束位置的b不被包含,所以只截取到a。默认步长是1
4abc
4b #步长为2,3-7是4abcd,只截取到4abc,但步长为2,所以间隔2,即4b
4bd #步长为2,3-8是4abcde,只截取到4abcd,步长为2,所以间隔2,即4bd
开始位置的下标可以不写,默认是从0开始;如果结束的下标不写,则表示选取到最后;如果都不写,则表示选取所有。
s='1234abcdefg'
print(s)
print(s[:6])#开始不写,则表示从0开始
print(s[3:])#结束不写,表示选取到最后
print(s[:])#开始和结束都不写,则表示选取所有
print(s[::2])
#结果
1234abcdefg
1234ab
4abcdefg
1234abcdefg
13aceg
为负数时,要注意开始->结束的方向和步长的方向是否一致,如果不一致则无法截取。
s='1234abcdefg'
print(s[::-2])#步长为负数,则表示倒序选取,即:从右往左
#结果
geca31
print(s[-6:-2])#-1表示最后一个数据,依次往前类推
#结果
bcde
s='1234abcdefg'
print(s[-6:-2:-1])#从-6到-2是表示从左往右,如果步长为负数,表示从右往左选取。当冲突时,是选取不出来的
print(s[-6:-2:1])
print(s[-2:-6:-1])#如果步长要负数,要选取出来,那方向也要一致,即开始到结束的方向也要从右到左
#结果:
bcde
fedc
字符串的常用操作方法有:查找,修改和判断三大类
所谓的查找就是找子串在字符串中的位置或出现的次数。
yes='hello world and hello you'
字符串:hello world and hello you
子串:hello,或者hel
(1)find():检测某个子串是否包含在这个字符串中,如果在就返回这个子串开始的位置下标,否则返回-1
语法:字符串序列.find(子串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找
yes='hello world and hello you'
print(yes.find('yes'))#不在字符串中,则返回-1
print(yes.find('and'))#在则返回对应的下标位置,and的a是从0算到第12个位置开始
print(yes.find('an'))
#结果:
-1
12
12
(2)index():检测某个子串是否包含在这个字符串中,如果在就返回这个子串开始的位置下标,否则报异常
语法:字符串序列.index(子串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找
print(yes.index('yes'))
#结果
Traceback (most recent call last):
File "D:\工作\python script\test0\下标.py", line 5, in
print(yes.index('yes'))
ValueError: substring not found
rfind()与find()和rindex()与index()的用法是一样的,不过他们不同的是这两个是从右侧开始查找
(3)count():返回某个子串在字符串中出现的次数
语法:字符串序列.count(子串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找
yes='hello world and hello you'
print(yes.count('and'))
print(yes.count('he'))
#结果
1
2
通过函数的形式修改字符串中的数据
(1)replace()
语法:字符串序列.replace(旧子串,新子串,替换次数)
注意:替换次数如果查出子串出现次数,则替换次数为该子串出现次数
yes='hello world and hello you'
print(yes.replace('hello','oh'))
#结果
oh world and oh you
字符串是不可变数据类型,修改它不会改变它之前的数据
yes='hello world and hello you'
la=yes.replace('hello','oh')
print(la)
print(yes)
#结果
oh world and oh you
hello world and hello you
#——————调用replace函数后,原字符串并没有修改,修改后的数据是replace函数的返回值,它可以放在一个变量中
#继续输出yes,发现仍旧是修改之前的数据,所以是不可变的
替换次数。当替换次数超过了子串出现在字符串中的次数,则会将字符串中的子串全部替换,不会报错
yes='hello world and hello you'
la=yes.replace('hello','oh',1)
print(la)
#结果
oh world and hello you
(2)split():按照指定字符分割字符串
语法:字符串序列.split(分割字符,num)
注意:num表示的是分割字符出现的次数,即将来发挥数据个数为num+1个。分割后会丢失分割字符
yes='hello world and hello you'
la=yes.split('hello',2)
print(la)
#结果
['', ' world and ', ' you']
(3)join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串
语法:字符串序列.join(多字符串组成的序列)
yes=['aa','bbb','cccc']
ok='>'.join(yes)
print(ok)
print('>'.join(yes))
#结果
aa>bbb>cccc
aa>bbb>cccc
(1)capitalized():将字符串第一个字符转换成大写
(2)title():将字符串中每个单词首字母转换成大写
(3)lower():将字符串中大写转小写
(4)upper():将字符串中小写转大写
str='hello,how are you'
newstr=str.capitalize()
print(newstr)
#结果
Hello,how are you
q='hello world'
newq=q.title()
print(newq)
#结果 Hello World
w='YES'
neww=w.lower()
print(neww)
#结果:yes
e='Oh'
newe=e.upper()
print(newe)
#结果
OH
(1)lstrip():删除字符串左侧空白字符
(2)rstrip():删除字符串右侧的空白字符
(3)strip():删除字符串两侧空白字符
newstr=str.strip(' helloworld ' )
print(newstr)
#结果
helloworld
(1)ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
语法:字符串序列.ljust(长度,填充字符)
(2)rjust():从右开始填充至对应长度
newstr=str.ljust('ha',10,'>')
print(newstr)
#结果:以>来从左边开始填充,填充以至于达到10的范围
ha>>>>>>>>
#右填充
str='hello'
newstr=str.rjust(8,'!')
print(newstr)
#结果
!!!hello
判断即是真是假,返回的结果是bool型数据类型,True或False
(1)startswith():检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在这个范围内进行检查。
语法:字符串序列.startswitch(子串,开始位置下标,结束位置下标)
(2)endswitch()
print(str.startswith('hello world','world')) #结果:False print(str.endswith('how are you','ou')) #结果:True
(3)isalpha():如果字符串至少又一个字符并且所有字符都是字母则返回True,否则返回False。
(4)isdigit():如果字符串只包含数字则返回True,否则返回False。
(5)isalnum():如果字符串中至少又一个字符并且所有字符都是字母或者数字,则返回True,否则False
#isalpha 只包含字母
str='howareyou'
newstr=str.isalpha()
print(newstr)
#结果
True
print(str.isalpha('how are you'))
#结果
False
#isdigit() 只包含数字
print(str.isdigit('123'))
#结果
True
#isalnum() 只包含数字或者字母
print(str.isalnum('123'))
print(str.isalnum('12and3'))
#结果
True
True
#isspace() 只包含空格
print(str.isspace('1 2 3'))
print(str.isspace(' '))
#结果
False
True