3.5 字符串(深度理解常用的一些字符串方法)
- 1. 字符串的分片操作
- 2. 访问字符串中的单个字符
- 3. 修改字符串中的字符
- 4. 字符串的操作方法
- 1)capitalize()方法
- 2) casefold()方法
- 3) center(wodth)方法
- 4) count(sub[,start[,end]])方法
- 5) encode(encoding='utf-8',errors='strict')方法
- 6) endswith(sub[,start[,end]])方法
- 7) expandtabs([tabsize=8])方法
- 8) find(sub[,start[,end]])方法
- 9)index(sub[,start[,end]])方法
- 10)isalnum()方法
- 11)isalpha()方法
- 12)isdecimal()方法
- 13)isdigit()方法
- 14)islower()方法
- 15)isnumeric()方法
- 16)isspace()方法
- 17)istitle()方法
- 18)isupper()方法
- 19)join(sub)方法
- 20)ljust(width)方法
- 21)lower()方法
- 22)lstrip()方法
- 23)partition(sub)方法
- 24)replace(old,new[,count])方法
- 25)rfind(sub[,start[,end]])方法
- 26)rindex(sub[,start[,end]])方法
- 27)rjust(width)方法
- 28)rpartition(sub)方法
- 29)rstrip()方法 删除字符串末尾的空格
- 30)split(sep=None,maxsplit=-1)方法
- 31)splitlines(([keepends]))方法
- 32)startswith(prefix[,start[,end]])方法
- 33)strip([chars])方法
- 34)swapcase()方法
- 35)title()方法
- 36)translate(table)方法
- 37)upper()方法
- 38)zfill(width)方法
1. 字符串的分片操作
对列表的操作 分片 Silce 也可以对字符串操作
str1 = "I love weivid"
name1 = str1[:6]
print(name1) # 打印出前6 个字符
2. 访问字符串中的单个字符
python中由于不像其他语言有字符(char)类型,访问字符串中的单个字符时,python提供的方法
将单个字符看成为 只有一个字符的 字符串
通过索引index的方式
print(str1)
char = str1[5] #通过索引访问字符串中 单个子字符
print(char)
3. 修改字符串中的字符
如对字符串中间进行插入、拼接操作
str2 = str1[:6] + "insert string" + str1[6:] #拼接
print(str2)
4. 字符串的操作方法
下面列出一些常用的方法
字符串方法 | 作用 |
---|---|
capitalize() | 把字符串的第一个字符改为大写 |
casefold() | 把整个字符串的所有字符改为小写 |
center(width) | 将字符串居中,并使用空格填充至长度 width 的新字符串 |
count(sub[, start[, end]]) | 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。 |
encode(encoding=‘utf-8’, errors=‘strict’) | 以 encoding 指定的编码格式对字符串进行编码。 |
endswith(sub[, start[, end]]) | 检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。 |
expandtabs([tabsize=8]) | 把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。 |
find(sub[, start[, end]]) | 检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。 |
index(sub[, start[, end]]) | 跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。 |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。 |
isdecimal() | 如果字符串只包含十进制数字则返回 True,否则返回 False。 |
isdigit() | 如果字符串只包含数字则返回 True,否则返回 False。 |
islower() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。 |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False。 |
isspace() | 如果字符串中只包含空格,则返回 True,否则返回 False。 |
istitle() | 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。 |
isupper() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。 |
join(sub) | 以字符串作为分隔符,插入到 sub 中所有的字符之间。 |
ljust(width) | 返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。 |
lower() | 转换字符串中所有大写字符为小写。 |
lstrip() | 去掉字符串左边的所有空格 |
partition(sub) | 找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 (‘原字符串’, ‘’, ‘’) |
replace(old, new[, count]) | 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。 |
rfind(sub[, start[, end]]) | 类似于 find() 方法,不过是从右边开始查找。 |
rindex(sub[, start[, end]]) | 类似于 index() 方法,不过是从右边开始。 |
rjust(width) | 返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。 |
rpartition(sub) | 类似于 partition() 方法,不过是从右边开始查找。 |
rstrip() | 删除字符串末尾的空格。 |
split(sep=None, maxsplit=-1) | 不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。 |
splitlines(([keepends])) | 在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。。 |
startswith(prefix[, start[, end]]) | 检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。 |
strip([chars]) | 删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。 |
swapcase() | 翻转字符串中的大小写。 |
title() | 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。 |
translate(table) | 根据 table 的规则(可以由 str.maketrans(‘a’, ‘b’) 定制)转换字符串中的字符。 |
upper() | 转换字符串中的所有小写字符为大写。 |
zfill(width) | 返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。 |
简单介绍以下各个方法的一些使用注意的地方
1)capitalize()方法
把字符串的第一个字符改为大写
str1 = "xiaoxie"
str1_1 = str1.capitalize() #开头大写,返回一个新的字符串,可以被赋值
print(str1_1)
2) casefold()方法
把整个字符串的所有字符改为小写
str2 = "SEsfdsSdss"
str2.casefold() #将所有字符串大写改为小写,
#注意返回新的字符串,并没有改变 源字符串
print(str2)
str2_2 = str2.casefold()
print(str2_2)
3) center(wodth)方法
把字符串居中,并使用空格填充至长度为width 的新字符串
str2.center(40) #将字符串str2 居中,40为填充的长度
str2_3 = str2.center(40)
print(str2_3)
4) count(sub[,start[,end]])方法
返回sub在字符串里面出现的次数,start 和end 参数表示范围,可选
str3 ="I love weivid xixi"
print(str3)
str3_1 = str3.count('xi') #字符串'xi' 在字符串中出现的次数
print(str3_1) #打印‘xi’出现2次
5) encode(encoding=‘utf-8’,errors=‘strict’)方法
以encoding 指定的编码格式对字符串进行编码
#编码,后续提到
6) endswith(sub[,start[,end]])方法
检查字符串是否以sub 子字符串结束,如果时返回True,否则返回False. start和end 参数表示范围,可选
str4 ="I love weivid xixi"
print(str4)
str4_1 = str4.endswith('xi') #检查字符串是否以'xi'
print(str4_1) # 结果返回为True
7) expandtabs([tabsize=8])方法
把字符串中的tab符号 \t 转换为空格,如不指定参数,默认的空格数为tabsize = 8
str5 = "I\tlove\tweivid wangwei"
print(str5) #注意打印的结果,I后有七个空格,love后有四个空格,weivid后有两个
str5_1 = str5.expandtabs() #将字符串中的\t替换为空格,默认为8个空格
8) find(sub[,start[,end]])方法
检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选
str6 = "I love weivid xixi"
print(str6)
str6_1 = str6.find('efc')
print(str6_1) # 打印—1, 表示字符串里没有efc
str6_2 = str6.find('wei')
print(str6_2) # 打印 7, 表示从字符串的第八位开始有wei
9)index(sub[,start[,end]])方法
跟find 方法一样,不过如果sub不在字符串中会产生一个异常
str6 = "I love weivid xixi"
print(str6)
#str6_1 = str6.index('efc')
#print(str6_1) # 异常
str6_2 = str6.find('wei')
print(str6_2) # 打印 7, 表示从字符串的第八位开始有wei
find 相较于index来说,比较和谐,一般来说不愿意看到异常
10)isalnum()方法
如果字符串至少有一个字符并且所有字符都是字母或数字,则返回True,否则返回False
11)isalpha()方法
如果字符串至少有一个字符并且所有字符都是字母,则返回True,否则返回False
12)isdecimal()方法
如果字符串只包含十进制数字,则返回True,否则返回False
13)isdigit()方法
如果字符串只包含数字,则返回False
14)islower()方法
如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False
如果字符串中是中文,则返回False
str7 = "陈磊"
str7_1 = str7.islower() #中文返回False
print(str7_1)
15)isnumeric()方法
如果字符串中只包含数字字符,则返回True,否则返回False
16)isspace()方法
如果字符串中只包含看空格,则返回True,否则返回False
17)istitle()方法
如果字符串是标题化(所有的单词都是大写开始,其余都是小写),则返回True,否则返回False
str8 = "Weivid"
str8_1 = str8.istitle() #返回True
print(str8_1)
str8 = "WeiviD"
str8_1 = str8.istitle() #返回False
print(str8_1)
18)isupper()方法
如果字符串至少包含一个区分大小写的字符并且这些字符都是大写,则返回True,否则返回False
19)join(sub)方法
以字符串作为分隔符,并使用空格填充所有的字符之间
str9 = "Weivid"
str9_1 = str9.join('123456') #字符串被原始的字符串隔开
print(str9_1)
20)ljust(width)方法
返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串
21)lower()方法
转换字符串中所有大写字符为小写
22)lstrip()方法
去掉字符串左边的所有空格
str10 = " I love Weivid"
str10_1 = str10.lstrip() #去掉左边所有空格
print(str10_1)
23)partition(sub)方法
找到子字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’,’’,’’)
str11 = "I love Weivid"
str11_1 = str11.partition('ve') #
print(str11_1)
24)replace(old,new[,count])方法
把字符串中的old替换成new子字符串,如果count指定,则替换不超过count次
str12 = "I love Weivid ve"
str12_1 = str12.replace('ve', 'wang') #将所有的ve替换为wang
print(str12_1)
25)rfind(sub[,start[,end]])方法
类似与find()函数,是从右边开始
#对于很长的字符串,比如网页的信息,可以看作为一个很长的字符串,有时候需要从左或者是往右进行查看字符串,效率是不一样的
26)rindex(sub[,start[,end]])方法
类似于Index()函数,是从右边开始
27)rjust(width)方法
返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串
28)rpartition(sub)方法
类似于partition()函数,是从右边开始
29)rstrip()方法 删除字符串末尾的空格
30)split(sep=None,maxsplit=-1)方法
不带参数默认是以空格分隔符切片字符串,如果maxsplit参数有设置,
则仅分割mxsplit个字符串,返回切片后的子字符串拼接的列表
str13 = "I love Weivid"
str13_1 = str13.split() #默认是以空格,就会切片,形成一个列表
print(str13_1)
str13_2 = str13.split('ve') # 以‘ve’作为分隔符,切片形成列表
print(str13_2)
31)splitlines(([keepends]))方法
按照’\n’分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行
32)startswith(prefix[,start[,end]])方法
检查字符串是否以prefix开头,是则返回True,否则返回False,start和end参数可以指定范围检查,可选
33)strip([chars])方法
删除字符串前边和后边所有空格,chars参数可以定制删除的字符,可选
#字符串中间的空格不会删除
str14 = " I love Weivid "
str14_1 = str14.strip() #
print(str14_1)
str14 = "ssssaaaasssss"
str14_2 = str14.strip('s') #删除首位以s开头或者结尾的字符串
print(str14_2)
34)swapcase()方法
翻转字符串的大小写
35)title()方法
返回标题化(所有的单词都是以大写开始,其余是小写)的字符串
36)translate(table)方法
根据table的规则(可以由str.maketrans(‘a’,‘b’)定制)转换字符串中的字符
str15 = "ssssaaaassss"
str15_1 = str15.translate(str.maketrans('s','b'))
print(str15_1) #按照table的转换规则,将所有的s替换为b
print(str.maketrans('s','b')) #返回assic码,{115:98},115,98分别为s 和 b 的assic码
37)upper()方法
转换字符串中的所有小写字符为大写
38)zfill(width)方法
返回长度为width的字符串,原字符串右对齐,前边用0填充