python学习(三)字符串

目录

1、下标

2、切片

3、字符串的查找

4、字符串的修改

5、修改之大小写转换

6、修改之删除字符串空白字符

7、修改之字符串对齐

8、字符串的判断


1、下标

下标又称为索引或者索引值,也就是编号。作用是通过下标能快速的找到对应的数据,都是从0开始顺序往后推

s='1234'
print(s)
print(s[0])
print(s[3])
#结果
1234
1
4

2、切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作

语法:序列【开始位置下标:结束位置下标:步长】

注意:

        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

3、字符串的查找

字符串的常用操作方法有:查找,修改和判断三大类

所谓的查找就是找子串在字符串中的位置或出现的次数。

        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

4、字符串的修改

通过函数的形式修改字符串中的数据

(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

5、修改之大小写转换

(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

6、修改之删除字符串空白字符

(1)lstrip():删除字符串左侧空白字符

(2)rstrip():删除字符串右侧的空白字符

(3)strip():删除字符串两侧空白字符

newstr=str.strip('  helloworld   '  )
print(newstr)
#结果
helloworld

7、修改之字符串对齐

(1)ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串

语法:字符串序列.ljust(长度,填充字符)

(2)rjust():从右开始填充至对应长度

newstr=str.ljust('ha',10,'>')
print(newstr)
#结果:以>来从左边开始填充,填充以至于达到10的范围
ha>>>>>>>>
#右填充
str='hello'
newstr=str.rjust(8,'!')
print(newstr)
#结果
!!!hello

8、字符串的判断

判断即是真是假,返回的结果是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

你可能感兴趣的:(学习)