字符串方法:
一、查找和替换
二、判断类型,返回要么True,要么False
三、大小写转换
四、文本对齐
五、去除空白符:空格 \n \t \r
六、拆分和拼接
字符串方法
一、查找和替换
01 find查找字符串方法,查找str在开始位置结束位置的索引,找不到会返回-1
-
语法
str.find(str,start=0,end=len(str)) start:默认是0,0是索引 end:默认是字符串整个长度 返回是查找的字符串最低的索引, 如果找不到就返回 -1
-
案例 :info = "abd eeae张三656"
info = "abd eeae张三656" print(info.find("eea")) # 不指定范围表示默认在整个字符串中查找 print(info.find("eea",2)) # 表示从索引2开始找,直到字符串最后一位 print(info.find("eea",3,4)) #表示从索引3开始找,到索引4结束.和切片差不多取头不取尾,所以索引4不找,返回-1 print(info.find("eea",8)) # 从索引8开始找,找不到返回-1
结果:
4
4
-1
-1
02 rfind方法和find方法类似,找出字符串的最高索引,找不到返回 -1
-
语法:
str.rfind(str,start=0,end=len(str)) start:默认是0,0是索引 end:默认是字符串整个长度 返回是查找的字符串最高的索引, 如果找不到就返回 -1
-
案例
# rfind方法 跟find类似找出最高索引 print(info.rfind("e")) # 不指定范围表示默认在整个字符串中查找 print(info.rfind("e",5)) # 从索引5开始找,直到字符串末尾 print(info.rfind("e",7,10)) # 从索引7-10这个范围找,10索引不找 print(info.rfind("e",8)) # 从索引8开始找,找不到返回 -1
结果:
7
7
7
-1
03 index跟find类似,不过找不到会报错,一般要慎用。
-
语法
str.index(str,start=0,end=len(str)) start:默认是0,0是索引 end:默认是字符串整个长度 返回是查找的字符串最低的索引, 如果找不到会报错
-
案例:
str1 = "abc def ger" print(str1.index("e")) print(str1.index("e",2)) print(str1.index("e",1,9)) print(str1.index("m")) # 找不到会报错:ValueError: substring not found
结果:
5
5
5
ValueError: substring not found
04 rindex,找出字符串的最高索引,找不到同样会报错!
-
语法
str.index(str,start=0,end=len(str)) start:默认是0,0是索引 end:默认是字符串整个长度 返回是查找的字符串最高的索引, 如果找不到会报错
-
案例
# rindex 找出字符串的最高索引,找不到会报错 str1 = "abc def ger" print(str1.rindex("e")) print(str1.rindex("e",2,10)) print(str1.rindex("e",10)) # ValueError: substring not found
结果:
9
9
ValueError: substring not found
05 startswith,检查字符串是否是以指定子字符串开头,返回True or False
-
语法
str.startswith(substr, start=0,end=len(string))
-
案例
str_1 = "this is string example....wow!!!" print(str_1.startswith("this")) # 字符串是否以 this 开头 print(str_1.startswith("string", 8)) # 从索引8开始在字符串 开头是否是string开头 print(str_1.startswith("this", 2, 4)) # 从索引2-4在字符串 是否以this开头
结果:
True
True
False
06 endswith,检测字符串是否以指定子字符串结束,是返回true,不是返回false.
-
语法
-
str.endswith(substr, start=0,end=len(string))
案例
str_2 = "love python 100" print(str_2.endswith("100")) print(str_2.endswith("100", 3)) print(str_2.endswith("10"))
结果:
True
True
False
07 replace 指定子字符串替换为另一个字符串,并且返回结果。
-
语法
str.replace(old, new[, count]) old需要替换的子字符串,new新的子字符串。 count是可选参数。没有的时,表示替换所有。 count这个参数出现时,表示替换次数最多count次。
-
案例
name = "this is adeng" new_name = name.replace("adeng", "阿登") # 返回在结果被new_name接受原字符串不变 print(name) print(new_name)
结果:
this is adeng
this is 阿登
-
案例
name = "this is adeng" print(new_name.replace("is", "en")) # 可选参数count没有时,表示替换所有 print(new_name.replace("is", "en",1)) # 这里表示最多替换一次 print(new_name.replace("ios", "en",1)) # 如果old这个子字符串没有,那么就不替换
结果:
then en 阿登
then is 阿登
this is 阿登
08 count统计子字符串出现的次数.返回int
-
语法
语法: str.count(substr, beg=0,end=len(string)) start:默认是0,0是索引 end:默认是字符串整个长度
-
案例
info = "ooodajfklajfajj" print(info.count("a")) # 统计字符a在次数 print(info.count("a",5)) # 索引5开始统计 print(info.count("a",6,10)) # 索引6到10索引这个范围在统计,但是索引10取不到
结果:
3
2
1
二、判断类型,返回要么True,要么False
01 isalnum,是否是由字母组成或数字组成或数字加字母组成 True,否则返回 False。
-
案例
print("带有特殊符号的字符串:", "abd!".isalnum()) 返回 False print("全是字母组成的字符串:", "abd".isalnum()) 返回 True print("全是数字组成的字符串:", "4214321421".isalnum()) 返回 True print("字母数字混合组成的:", "abdMYY2313213".isalnum()) 返回 True print("字母数字汉子混合组成的:", "abdMYY2313213".isalnum()) 返回 True # 这里要重视
02 isalpha,至少有一个字符并且所有字符都是字母或汉字则返回 True,否则返回 False
- 案例
print("带有特殊符号的字符串:", "abd!".isalpha())
print("字母和数字组成的字符串:", "abd213213".isalpha())
print("全数字组成的字符串:", "213213".isalpha())
print("全汉字组成的字符串:", "发发嘎嘎嘎".isalpha())
print("汉字和字母组成的字符串:", "发发嘎daaw嘎嘎".isalpha())
print("带空格的字符串:", "发发嘎嘎嘎 ".isalpha())
结果:
带有特殊符号的字符串: False
字母和数字组成的字符串: False
全数字组成的字符串: False
全汉字组成的字符串: True
汉字和字母组成的字符串: True
带空格的字符串: False
03 isdigit,字符串只包含数字则返回 True 否则返回 False
- 案例
# isdigit 字符串只包含数字则返回 True 否则返回 False
print("带空格在数字:","123132 ".isdigit()) # 返回 False
print("带小数点的数字:","123132.".isdigit()) # 返回 False
print("只有数字:","4234234".isdigit()) # 返回 True
04 isspace,检查字符串只包含空白符.空白符:空格 \r \n \t
- 案例
print(" \t \n \r".isspace()) # True
print(" \t \n \rdada11".isspace()) # False
05 isdecimal,检查字符串只包含数字,正整数才行
-
案例
print("小数字符串:","54.5".isdecimal()) # False print("带汉字:","发送".isdecimal()) # False print("负数:","-100".isdecimal()) # False print("正整数:","5".isdecimal()) # True str.isdecimal () 与str.isdigit()的区别 str.isdecimal() 函数只对十进制数返回 True,同时函数 str.isdigit() 对其他 unicode 支持的字符返回 True
06 isnumeric,包含数字则返回 True. 全角数字 汉字数字
-
案例
# isnumeric,包含数字则返回 True. 全角数字 汉字数字 print("32141".isnumeric()) #s = '²3455' s = '\u00B23455' print(s.isnumeric()) # s = '½' s = '\u00BD' print(s.isnumeric()) a = "\u0030" #unicode for 0 print(a.isnumeric()) b = "\u00B2" #unicode for ² print(b.isnumeric()) c = "10km2" print(c.isnumeric())
结果:
True
True
True
True
True
False
07 istitle,单词首字母大写,其他小写
-
案例
print("单词首字母都大写:","This Is String Example...Wow!!!".istitle()) print("单词首字母都大写,部分单词剩余部分未小写:","THis Is String Example...Wow!!!".istitle()) print("第一个单词首字母大写,其他单词小写:","This is string example....wow!!!".istitle())
结果:
单词首字母都大写: True
单词首字母都大写,部分单词剩余部分未小写: False
第一个单词首字母大写,其他单词小写: False
08 islower和 isupper,检查字符串是否全部小写或者大写
-
案例
# 检查小写 islower print("This is string example....wow!!!".islower()) print("this is string example....wow!!!".islower()) # isupper 检查大写 print("THIS IS STRING EXAMPLE....WOW!!!".isupper())
结果:
False
True
True
三、大小写转换
01 lower,转换成小写
-
案例
>>> "DFAGAGAGA".lower() 'dfagagaga
02 upper转成大写
-
案例
>>> "this".upper() 'THIS'
03 title 每个单词首字母转换成大写
-
案例
>>> "This is string example....wow!!!".title() 'This Is String Example....Wow!!!'
04 capitalize() 把字符串第一个字母转化为大写
-
案例
>>> "this is string example....wow!!!".capitalize() 'This is string example....wow!!!'
05 swapcase() 大小写互换
-
案例
>>> "fdafafaMMHJOIH".swapcase() 'FDAFAFAmmhjoih'
四、文本对齐
01 center,返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格
-
语法
str.center(width, fillchar) width int类型 宽度 fillchar 要填充的字符
-
案例
print("阿登帅哥".center(100, "+")) center是居中对齐,100表示宽度, 字符串 阿登帅哥不满足100宽度时,用 +两端填充知道满足宽度100
结果:
+++++++++++++++++++++++++++阿登帅哥++++++++++++++++++++++++++++++++++
02 ljust,左对齐,参数和center一致
03 rjust,右对齐,参数和center一摸一样
-
案例
# ljust() 左对齐,参数和center一摸一样 print("阿登帅哥".ljust(50, "=")) # rjust 右对齐,参数和center一摸一样 print("阿登帅哥".rjust(50, "="))
结果:
阿登帅哥==============================================
==============================================阿登帅哥
五、去除空白符:空格 \n \t \r
01 strip lstrip rstrip,默认移除空白符
-
strip 去除字符串两端在空白符,场景一般用于用户注册
-
lstrip 去除字符串左边在空白符,返回一个新字符串
-
rstrip 去除字符串右边在空白符
-
案例
# strip 去除两端的空白符,返回一个新的字符串 str0 = ' Python! !* ' # 默认移除空白符 print("strip去除两端空白符:",str0.strip()) # 指定移除两端多个字符,知道条件不满足返回新字符串 print("strip指定移除两端多个字符:",str0.strip(" *!")) # lstrip 移除字符串左边的空白符 print("lstrip移除左边的空白符:", str0.lstrip()) # lstrip 指定移除左边多个满足条件的字符,返回新字符串 print("lstrip指定移除多个字符:", str0.lstrip(" Py")) # rstrip 移除字符串右边的空白符或指定的字符,道理同lstrip print("rstrip右边的空白符:", str0.rstrip()) # rstrip 指定移除字符串右边多个字符 print("rstrip指定移除右边的字符空格*!:", str0.rstrip(" *!"))
结果:
strip去除两端空白符: Python! !*
strip指定移除两端多个字符: Python
lstrip移除左边的空白符: Python! !*
lstrip指定移除多个字符: thon! !*
rstrip右边的空白符: Python! !*
rstrip指定移除右边的字符空格*!: Python
六、拆分和拼接
01 split分割字符串
-
语法
str.split(str,num)如果第二个参数 num 有指定值,则分割为 num+1 个子字符串 str 参数表示用什么去分割,默认包含 (空格 \r \n \t) num 默认为 -1,表示分割所有。当num指定值时,分割成列表在元素为num+1个 子字符串元素
-
案例
>>> a = "to be or not to be" >>> a.split() # 不写分隔符,用空白符去分隔包含 空格 \n \t \r ['to', 'be', 'or', 'not', 'to', 'be'] >>> a.split('be') ['to ', ' or not to ', '' >>> a.split('be', 1) # 指定分隔次数,num指定一个int值就行,比如这里指定分隔1次 ['to ', ' or not to be']
-
案例2 url分隔,获取图片格式,图片名称
url = "http://www.baidu.com/python/image/123456.jpg" #以“.” 进行分隔 path =url.split(".") print(path) 以上输出结果:获取一个文件的后缀格式的方法 ['http://www', 'baidu', 'com/python/image/123456', 'jpg'] 以 / 进行分隔: ['http:', '', 'www.baidu.com', 'python', 'image', '123456.jpg'] 我们在学习 python 爬虫的时候例如需要保存图片,图片名称的获取,可以依照下列方法: picture =url.split("/")[-1] 输出结果: '123456.jpg'
02 splitlines按照(\r,\r\n,\n分隔,返回一个包含各行的作为元素的列表
-
语法
str.splitlines(keepends=False) keepends默认为False,不保留换行符,为True表示保留换行符
-
案例
tl = 'ab c\n\nde fg\rkl\r\n' print(tl.splitlines()) # 默认False,不保留换行符 # 上面输出结果 # ['ab c', '', 'de fg', 'kl'] print(tl.splitlines(True)) #输出结果 # ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
03 rsplit 做右到左分割,跟split相反
-
案例
url = "http://www.baidu.com/python/image/123456.jpg" pp = url.split(".",1) ppp = url.rsplit(".",1) # 如果要获取一个路径的最后文件后缀可以反向分隔 print(pp,ppp,sep="\n") # 结果为 ['http://www', 'baidu.com/python/image/123456.jpg'] ['http://www.baidu.com/python/image/123456', 'jpg']
04 partition,分隔符讲字符串分隔成三个子字符串的元组
-
语法
str.partition(sep) sep分隔符,分割成三部分组成1个元祖 (分隔符左边字符串,分隔符,分隔符右边字符串)
-
案例
url_1 = "www.baidu.com" print(url_1.partition("baidu")) # ('www.', 'baidu', '.com') # 如果找不到分隔符,返回原来在字符串和两个空字符串 print(url_1.partition("p")) # ('www.baidu.com', '', '')
- rpartition(sep),跟partition类似只是从右边开始找
05 join,序列中的元素以指定的字符连接生成一个新的字符串
-
语法
str.join(sep) str用来拼接可迭代对象在元素,组成1个新在字符串 sep 的元素必须是字符串,不然要报错
-
案例
# 可迭代对象 的元素不是字符串会报错 a = ["adeng",1] print("".join(a)) #TypeError: sequence item 1: expected str instance, int found # 列表a中的元素 1是int类型不是字符串所以报错了
-
迭代对象可以是 字符串 列表 元组 集合 字典
# 迭代对象是字符串 print("_".join("我们爱中国")) # 迭代对象是一个列表 print("".join(["p",'e','n'])) # 迭代对象是一个元组 print("".join(("p",'e','n'))) # 迭代对象是一个字典,拼接的是字典的key print('-'.join({"name1":"joy","name2":"john","name3":"jerry"})) #结果 ''' 我_们_爱_中_国 pen pen name1-name2-name3 '''
- 案例 join 方法的确是程序中字符串与列表相互转换的很好用的工具
# 案例将1个手输入的字符串,倒叙排。这里我们用join方法
# 方法1
str_n = input("请输出一串字符串:\n")
# 定义一个空列表
list_one = []
for i in list(range(len(str_n)-1,-1,-1)): # 倒叙取出索引
list_one.append(str_n[i])
print(list_one)
print("".join(list_one))
# 方法2:
"""
字符串用循环索引倒着取值,加入到一个空列表,再用空字符串join方法拼接得到一个倒叙字符串
"""
list_one2 = []
str_m = input("请输出一串字符串:\n")
num_1 = len(str_m) -1
while (num_1 >=0):
list_one2.append(str_m[num_1])
# 控制循环次数 每次-1
num_1 -= 1 # 也可以用break 如果num_1 == 0,就break跳出循环
print("".join(list_one2))
# 这里完全可以用列表推导式简化代码,之后我们将到列表会演示的
'''
请输出一串字符串:
fasfafj额外发886712
217688发外额jfafsaf
'''
网友评论