1.字符串查询操作的方法
count(str,start,stop) 检索指定字符串在一个字符串中出现的次数
index() 查找字串substr第一次出现的位置,如果查找的字串不存在时,则抛出ValueError
rindex() 查找字串substr最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError
find() 查找字串substr第一次出现的位置,如果查找的字串不存在时,则返回-1
rfind() 查找字串substr最后一次出现的位置,如果查找的字串不存在时,则返回-1
startswith(str,start,stop) 检索字符串是否以指定字符串开头,是则返回True,不是则返回False
endswith(str,start,stop) 检索字符串是否以指定字符串结尾,是则返回True,不是则返回False
实例:
定义一个字符a:
a = "hello,hello,hello"
①次数统计count()
print(a.count("lo"))
未指定字符开始位置,则此时默认为开头,统计在a中从开头到结束出现"lo"的个数,结果很明显可知为3
print(a.count("lo", 5))
在此处我们指定了字符开始位置为5,即从第五个字符开始到结束统计lo出现的次数,结果为2
②出现位置index()和rindex()
index为找第一次出现的位置,rindex为找最后一次出现的位置
print(a.index("lo"))
print(a.rindex("lo"))
输出结果为:
3
15
③出现位置find()和rfind()
print(a.find("lo"))
print(a.rfind("lo"))
输出结果依然为
3
15
那find和index的区别是什么呢?
在未找到结果时,index会直接抛出错误,而find会返回值-1
④指定开头结尾startswith()和endswith()
startswith()即检验字符串是否以输入字符为开头
endswith()即检验字符串是否以输入字符为结尾
并返回布尔值,True即为是,False即为否
print(a.startswith("h"))
print(a.startswith("@"))
print(a.endswith("lo"))
print(a.endswith("ol"))
输出结果为:
True
False
True
False
2.字符串的大小写转换操作
upper() 把字符串中的所有字符转成大写字母
lower() 把字符串中的所有字符转成小写字母
swapcase() 把字符串中的大写字母转小写字母,小写字母转大写字母
capitalize() 把第一个字符转成大写,其他转成小写
title() 把每个单词的第一个字母转换成大写,其余转换为小写
实例如下:
b = "aBcDEfgHIjklMNoPqRsTUVwxYZ"
print("b为:", b)
print("b大转小,小转大大:", b.swapcase())
print("b全转大写:", b.upper())
print("b全转小写:", b.lower())
c = "i always LIKE YOU SO MUCH"
print(c)
print(c.capitalize())
print(c.title())
输出结果为:
b为: aBcDEfgHIjklMNoPqRsTUVwxYZ
b大转小,小转大大: AbCdeFGhiJKLmnOpQrStuvWXyz
b全转大写: ABCDEFGHIJKLMNOPQRSTUVWXYZ
b全转小写: abcdefghijklmnopqrstuvwxyzi always LIKE YOU SO MUCH
I always like you so much
I Always Like You So Much
3.字符串内容对齐的操作方法:
center() 居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度则则返回原字符串
ljust() 左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度则则返回原字符串
rjust() 右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度则则返回原字符串
zfill() 右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身
首先定义一个字符串:
d1 = "hello,,world"
首先对其进行 居中操作:
print(d1)
print(d1.center(20, "*"))
print(d1.center(21, "*"))
print(d1.center(10, "*"))
center第二个参数为填充字符,即当指定字符不够我们输入的总字符量时,就会用填充字符来对缺少的字符进行补充,结果为:
hello,,world
****hello,,world****
*****hello,,world****
hello,,world
ljust()和rjust()同理,为左对称和右对称:
print(d1.ljust(20, "*"))
print(d1.rjust(20))
print(d1.rjust(20, "*"))
(若我们没有指定填充字符,则填充字符默认为空格)
而左对齐往右填充,右对齐往左填充
输出结果为:
hello,,world********
hello,,world
********hello,,world
zfill()为右对齐,而起只接受一个参数,就是指定字符串的宽度。
print(d1.zfill(20))
d2 = "-100001"
print(d2.zfill(20))
输出结果为:
00000000hello,,world
-0000000000000100001
可以发现,对数字字符进行填充时,会在符号位后进行填充,同时也会算上符号位。
4.字符串的劈分操作
split() 从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表,以通过参数sep指定劈分字符串是的劈分符;通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独做为一部分
rspplit() 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 ,以通过参数sep指定劈分字符串是的劈分符;通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独做为一部分
e1 = "hello world ls love zs"
e2 = "hello,world,ls,love,zs"
对e1和e2进行劈分:
print(e1.split())
print(e2.split(","))
print(e2.split(sep=","))
print(e1.split(maxsplit=2))
print(e1.rsplit(maxsplit=3))
对劈分字符未指定时,默认的劈分字符为空格,返回值为列表:
['hello', 'world', 'ls', 'love', 'zs']
['hello', 'world', 'ls', 'love', 'zs']
['hello', 'world', 'ls', 'love', 'zs']
['hello', 'world', 'ls love zs']
['hello world', 'ls', 'love', 'zs']
5.判断字符串的操作方法
isidentifier() 判断指定的字符串是不是合法的标识符
isspace() 判断指定的字符串是否全部由空白字符组成(回车、换行,水平制表符)
isalpha() 判断指定的字符串是否全部由字母或汉字组成
isdecimal() 判断指定字符串是否全部由十进制的数字组成
isnumeric() 判断指定的字符串是否全部由数字组成
isalnum() 判断指定字符串是否全部由字母,汉字和数字组成
用法非常的简单:
首先先定义字符串:
f1 = "hello,world"
f2 = "hello_world"
f3 = " \t\n\t"
f4 = "alaph"
f5 = "0b01111110"
f6 = "18948455"
f7 = "ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ" # 罗马数字
f8 = "123四"
f9 = "ab散散112哈哈哈ⅣⅤ"
f10 = "_,:c"
①isidentifier()
print(f1.isidentifier())
print(f2.isidentifier())
print("张三".isidentifier())
, 逗号不是合法的标识符,所以输出结果为:
False
True
True
②isspace()
print(f1.isspace())
print(f3.isspace())
输出结果为:
False
True
③isalpha()
print(f2.isalpha())
print(f4.isalpha())
print("张三".isalpha())
输出结果为:
False
True
True
⑤isdecimal()
print(f5.isdecimal())
print(f6.isdecimal())
print(f8.isdecimal())
print(f7.isdecimal())
输出结果为:
False
True
False
False
⑥isnumeric()
print(f7.isnumeric())
print(f8.isnumeric())
输出结果为:
True
True
⑦isalnum()
print(f9.isalnum())
print(f10.isalnum())
输出结果为:
True
False
6.字符串的其他操作
字符串替换: replace() 第1个参数指定被替换的子串,第2个参数指定替换子串的字符串,该方法返回替换后得到的字符串,替换前的字符串不发生变化,调用该方法时可以通过第3个参数指定最大替换次数
字符串合并: join() 将列表或元组中的字符串合并成一个字符串
①replace()
g1 = "a1b2c3d4f5g6h7i8j9"
print(g1.replace("d", "M"))
g2 = "aabbccaabbcc"
print(g2.replace("a", "N", 3))
输出结果为:
a1b2c3M4f5g6h7i8j9
NNbbccNabbcc
②join()
h = ["i\t", "l", "o", "v", "e""\tw", "w"]
print("".join(h).title())
# "" 里面可以写间隔符
print("|".join(h).title())
输出结果为:
I Love Ww
I |L|O|V|E W|W