知识点总结
type
函数用于检测数据类型
** eval(str )
用来计算在字符串中的有效Python表达式,并返回一个对象
此函数必须是字符串类型,此函数能根据变量的值推算出数据的类型并进行转换
s1 = '10' list1 = '[10, 20, 30]' t1 = '(10, 20, 30)' print(type(eval(s1))) # <class 'int'> print(type(eval(list1))) # <class 'list'> print(type(eval(t1))) # <class 'tuple'>
字符串(str)
三引号字符串支持换行
a='''hello word 你好 世界''' print(a)
下标
name = "abcdef" print(name[1])#b print(name[0])#a print(name[2])#c
切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作
序列[开始位置下标:结束位置下标:步长]
注意:
切片语法有三个参数,参数之间使用 : 分割
-
str[1:4:1] 表示 参数1为1,参数2为4,参数三位1
-
str[1:] 表示参数1=1,参数2=最后一个字符,参数3=1
-
str[:3:1] 表示参数1=0,参数2=3,参数3=1
-
str[::1] 表示参数1=0,参数2=字符串长度,参数3=1
-
str[:] 表示各个参数都是默认值
-
str[]
-
结束位置不包含在切片范围之内
-
步长是选取间隔,默认步长为1
-
三个参数都可以为负数
-
起始位置和结束位置为负数,表示索引是倒叙排序的
-
步长为正数,表示从左到右选取,为负数,表示从右到左选取
-
三个参数都可以不写
-
起始位置默认值=0
-
结束位置默认值=选取到最后一个字符
-
步长默认值=1
例题
name = "0123456789"
# 234:起始坐标为2,结束坐标为5但包含5,步长为正数1,表示从坐标2开始向右选取到坐标为5-1的字符
print(name[2:5:1])
# 234:省略了步长,则其默认值为1,所以与上面的选取结果一样
print(name[2:5])
# 01234:省略了开始坐标和步长,则其默认值分别为 0 和 1,表示从坐标0开始向右选取到坐标为5-1的字
符,步长为1
print(name[:5])
# 123456789 省略了结束坐标和步长,表示从坐标1开始,向又选取到最后一个字符,步长为1
print(name[1:])
# 0123456789省略了所有参数,表示从坐标0开始,向右选取到最后一个字符
print(name[:])
# 02468:省略了开始坐标和结束坐标,步长为2,表示从坐标0开始,向又间隔一个字符选取一个字符,一直
选取到最后一个字符
print(name[::2])
"""
012345678:省略了开始坐标和步长,表示从坐标0开始,向又选取到-1但又不包含-1(-1倒叙排列索引,及
最后一个字符索引为-1,倒数第二个索引为-2,倒数第三额索引为-3),
步长为1
"""
print(name[:-1])
# 678省略了步长,表示从坐标-4开始,向又选取到坐标为-1-1(-2)的字符,步长为1
print(name[-4:-1])
"""
9876543210
省略了开始坐标和结束坐标,且步长为-1
表示从0开始选取到最后一个字符,也就是所有字符
但因为步长为-1,所以这个选取是倒着的
"""
print(name[::-1])
name = "我喜欢看田腾吃" print(name[2:5:1])#欢看田 print(name[2:5])#欢看田 print(name[:5])#我喜欢看田 print(name[1:])# 喜欢看田腾吃 print(name[:])# 我喜欢看田腾吃 print(name[::2])# 我欢田吃 print(name[:-1])# 我喜欢看田腾 print(name[-4:-1])# 看田腾 print(name[::-1])# 吃腾田看欢喜我
字符串操作查找和修改
查找
find():
检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返
回-1。
1.语法
字符串序列.find(子串, 开始位置下标, 结束位置下标)
name="我喜欢看田腾吃田鼠" print(name.find('田',))#4 print(name.find('田',5,8))#7 print(name.find('赵'))#-1
index():
检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报
异常。
1.语法
字符串序列.index(子串, 开始位置下标, 结束位置下标)
name="我喜欢看田腾吃田鼠" print(name.index('田',))#4 print(name.index('田',5,8))#7 print(name.index('赵'))#报错
rfind(): 和find()功能相同,但查找方向为==右侧==开始。
rindex():和index()功能相同,但查找方向为==右侧==开始。
count():
返回某个子串在字符串中出现的次数
1.语法
字符串序列.count(子串, 开始位置下标, 结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
name="我喜欢看田腾在田野中吃田鼠" print(name.count('田',))#3 print(name.count('田',5,10))#1 print(name.count('赵'))#0
修改
replace():替换
1.语法
字符串序列.replace(旧子串, 新子串, 替换次数)
注意:替换次数如果查出子串出现次数,则替换次数为该子串出现次数。
name = "田腾在田野里吃田鼠" print(name.replace('田', '李'))# 李腾在李野里吃李鼠 print(name.replace('田', '李', 2))# 李腾在李野里吃田鼠 print(name)# 田腾在田野里吃田鼠
注意:数据按照是否能直接修改分为 可变类型 和 不可变类型 两种。字符串类型的数据修改的时
候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。
split():按照指定字符分割字符串
1.语法
字符串序列.split(分割字符, num)
注意:num表示的是分割字符出现的次数,即将来返回数据个数为num+1个
name="我喜欢看 田腾在田野里 吃 田鼠" print(name.split('田'))# ['我喜欢看 ', '腾在', '野里 吃 ', '鼠'] print(name.split('田',2))# ['我喜欢看 ', '腾在', '野里 吃 田鼠'] print(name.split(' '))# ['我喜欢看', '田腾在田野里', '吃', '田鼠'] print(name.split(' ',2))# ['我喜欢看', '田腾在田野里', '吃 田鼠']
注意:如果分割字符是原有字符串中的子串,分割后则丢失该子串。
join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。
1.语法
字符或子串.join(多字符串组成的序列)
list1=['田','腾','爱吃','田','鼠'] print('小'.join(list1))#田小腾小爱吃小田小鼠
capitalize():将字符串第一个字符转换成大写,剩下的字符小写
1.例子
name = "hello TianTen" print(name.capitalize())#Hello tianten
注意:capitalize()函数转换后,只字符串第一个字符大写,其他的字符全都小写。
title():将字符串每个单词首字母转换成大写。
1.例子
name = "Tian Teng what are you doing" print(name.title())#Tian Teng What Are You Doing
lower():将字符串中大写转小写。
1.例子
name = "Tian Teng what are you doing" print(name.lower())#tian teng what are you doing
upper():将字符串中小写转大写
1.例子
name = "Tian Teng what are you doing" print(name.upper())#TIAN TENG WHAT ARE YOU DOING
lstrip():删除字符串左侧空白字符
1.例子
name = " Tian Teng what are you doing" print(name.lstrip())#Tian Teng what are you doing
rstrip():删除字符串右侧空白字符
1.例子
name = "Tian Teng what are you doing " print(name.rstrip())#Tian Teng what are you doing
strip():删除字符串两侧空白字符
1.例子
name = " Tian Teng what are you doing " print(name.strip())#Tian Teng what are you doing
ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串。
1.语法
字符串序列.ljust(长度, 填充字符) +
mystr='hello' l1=mystr.ljust(10,'.') l2=mystr.ljust(10) print(l1)#'hello.....' print(l2)#'hello '
rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串,语法和
ljust()相同。
center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串,语
法和ljust()相同。
判断
所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
startswith():检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始
和结束位置下标,则在指定范围内检查
1语法
字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
name='Tian Teng what are you doing' print(name.startswith('Tian'))#True print(name.startswith('Tian', 5, 20))#False
endswith()::检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开
始和结束位置下标,则在指定范围内检查。
1.语法
字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
name='Tian Teng what are you doing' print(name.endswith('doing'))#True print(len(name))#28 print(name.endswith('doing', 5, 26))#False
isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False。
tian='tianteng' du='du123' print(tian.isalpha())#True print(du.isalpha())#False
isdigit():如果字符串只包含数字则返回 True 否则返回 False。
tian='tianteng' du='du123' li='123456' print(li.isdigit())#True print(tian.isdigit())#False print(du.isdigit())#False
isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回
False。
tian='tianteng' du='du123' li='123456' print(li.isalpha())#False print(tian.isalnum())#True print(du.isalnum())#True
isspace():如果字符串中只包含空白,则返回 True,否则返回 False。
tian = '1 2 3 4 5' du = ' ' print(tian.isspace())# 结果:False print(du.isspace())# 结果:True