购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 字符串的常用方法

在Python中,字符串类型可以看成是名称为str的类,而具体的字符串则可以看成由str类定义的对象。字符串对象支持很多方法,可以用来对字符串处理。这些方法需要通过对象名和方法名来调用,其语法格式为:对象名.方法名(参数)。

3.3.1 字母大/小写转换

若要进行字母的大/小写转换,则可以通过以下方法来返回一个新字符串。

1)s.upper(),全部转换为大写。

2)s.lower(),全部转换为小写。

3)s.swapcase(),大/小写互换。

4)s.capitalize(),整个字符串的首字母变成大写,其余字母变成小写。

5)s.title(),每个单词的首字母大写,其余字母均为小写。

【例3.8 】 字母大/小写转换操作示例。

【程序代码】

s=″Knowledge is power.″

print(″字符串原来内容:{0}″.format(s))

print(″全部转换为大写:{0}″.format(s.upper()))

print(″全部转换为小写:{0}″.format(s.lower()))

print(″大/小写互换:{0}″.format(s.swapcase()))

print(″句子首字母大写:{0}″.format(s.capitalize()))

print(″全部单词首字母大写:{0}″.format(s.title()))

【运行结果】

字符串原来内容:Knowledge is power.

全部转换为大写:KNOWLEDGE IS POWER.

全部转换为小写:knowledge is power.

大/小写互换:kNOWLEDGE IS POWER.

句子首字母大写:Knowledge is power.

全部单词首字母大写:Knowledge Is Power.

3.3.2 设置字符串对齐方式

若要设置字符串的输出宽度、填充字符和对齐方式,则可以通过以下方法来返回一个新字符串。

1)s.ljust(width[,fillchar]):用于输出width个字符,左对齐,右边不足部分使用fillchar(默认为空格)填充。

2)s.rjust(width[,fillchar]):用于输出width个字符,右对齐,左边不足部分使用fillchar(默认为空格)填充。

3)s.center(width[,fillchar]):用于输出width个字符,居中对齐,两边不足部分使用fillchar(默认为空格)填充。

4)s.zfill(width):用于将字符串长度变成width,字符串右对齐,左边不足部分使用0填充。

【例3.9 】 设置字符串对齐方式操作示例。

【程序代码】

s=″Knowledge is power.″

print(″字符串原来内容:{0}″.format(s))

print(″左对齐:{0}″.format(s.ljust(30,″#″)))

print(″右对齐:{0}″.format(s.rjust(30,″#″)))

print(″居中对齐:{0}″.format(s.center(30,″#″)))

print(″用0填充:{0}″.format(s.zfill(30)))

【运行结果】

字符串原来内容:Knowledge is power.

左对齐:Knowledge is power.###########

右对齐:###########Knowledge is power.

居中对齐:#####Knowledge is power.######

用0填充:00000000000Knowledge is power.

3.3.3 字符串的搜索和替换

对字符串进行搜索操作可以通过以下方法来实现。

1)s.find(substr[,start[,end]]):用于检测substr是否包含在s中,若是则返回开始的索引值,否则返回-1;若用start和end指定范围,则在s[start:end]中搜索。

2)s.index(substr[,start[,end]]):用法与find()相同,只是当substr不在s中时会报一个异常。

3)s.rfind(substr[,start[,end]]):用法与find()相同,只是从右边开始查找。

4)s.rindex(substr[,start[,end]]):用法与rfind()相同,只是当substr不在s中时会报一个异常。

5)s.count(substr[,start[,end]]):用于返回substr在s中出现的次数,若用start和end指定范围,则返回在s[start:end]中str出现的次数

6)s.startswith(prefix[,start[,end]]):用于检查字符串是否是以prefix开头,若是则返回True,否则返回False。如果用start和end指定范围,则在该范围内检查。

7)s.endswith(suffix[,start[,end]]):用于检查字符串是否是以suffix结尾,若是则返回True,否则返回False。如果用start和end指定范围,则在该范围内检查。

【例3.10 】 在字符串中搜索操作示例。

【程序代码】

s=″This is a book.″

print(″字符串内容:{0}″.format(s))

print(″\″is\″首次出现的位置:{:d}。″.format(s.find(″is″)))

print(″\″at\″首次出现的位置:{:d}。″.format(s.find(″at″)))

print(″\″is\″最后出现的位置:{:d}。″.format(s.rfind(″is″)))

print(″\″oo\″首次出现的位置:{:d}。″.format(s.index(″oo″)))

print(″\″s\″最后出现的位置:{:d}。″.format(s.rindex(″s″)))

print(″\″o\″出现的次数:{:d}。″.format(s.count(″o″)))

print(″该字符串以\″Th\″开头吗?{0}。″.format(″是″if s.startswith(″Th″) else″不是″))

print(″该字符串以\″at\″结尾吗?{0}。″.format(″是″if s.startswith(″at″) else″不是″))

【运行结果】

字符串内容:This is a book.

″is″首次出现的位置:2。

″at″首次出现的位置:-1。

″is″最后出现的位置:5。

″oo″首次出现的位置:11。

″s″最后出现的位置:6。

″o″出现的次数:2。

该字符串以″Th″开头吗?是。

该字符串以″at″结尾吗?不是。

若要对字符串进行替换操作,可以通过以下方法返回一个新的字符串。

1)s.replace(s1,s2[,count]),将s中的s1替换成s2。若指定count,则替换count次。

2)s.strip([chars]),在s前后移除由chars指定的字符(默认为空格)。

3)s.lstrip([chars]),在s左边移除由chars指定的字符(默认为空格)。

4)s.rstrip([chars]),在s右边移除由chars指定的字符(默认为空格)。

5)s.expandtabs([tabsize]),将s中的tab符号转为tabsize个空格,默认为8个空格。

【例3.11 】 在字符串中进行替换操作示例。

【程序代码】

s=″Hello,Python″

print(″原字符串:{0}。″.format(s))

print(″用*替换o:{0}。″.format(s.replace(″o″,″*″)))

s=″ Hello,Python ″

print(″原字符串:{0}。″.format(s))

print(″移除左空格:{0}。″.format(s.lstrip()))

print(″移除右空格:{0}。″.format(s.rstrip()))

print(″移除两侧空格:{0}。″.format(s.strip()))

【运行结果】

原字符串:Hello,Python。

用*替换o:Hell*,Pyth*n。

原字符串:Hello,Python。

移除左空格:Hello,Python。

移除右空格:Hello,Python。

移除两侧空格:Hello,Python。

3.3.4 字符串的拆分和组合

字符串的拆分和组合可以通过以下方法来实现。

1)s.split(sep[,num]):以sep为分隔符将s拆分为列表,默认的分隔符为空格;num指定拆分的次数,默认值为-1,表示无限制拆分。

2)s.rsplit(sep[,num]):与split()类似,只是从右边开始拆分。

3)s.splitlines([keepends]):按行(″\r″、″\r\n″、″\n″)将 s 拆分成列表;若参数 keepends为True,则保留换行符。

4)s.partition(sub):从sub出现的位置作为第一个位置开始,将字符串s拆分成一个元组(sub左边字符串,sub,sub右边字符串);若s中不包含sub,sub左边字符串即s本身。

5)s.join(seq):以s作为分隔符,将序列seq中的所有元素合并成一个新的字符串。

【例3.12 】 字符串的拆分和组合操作示例。

【程序代码】

s=″AAA,BBB,CCC,DDD″

print(″原字符串:{0}″.format(s))

print(″拆分成列表:{0}″.format(s.split(″,″)))

s=″AAA+BBB+CCC+DDD″

print(″原字符串:{0}″.format(s))

print(″拆分成列表:{0}″.format(s.split(″+″)))

s=″demo.py″

print(″原字符串:{0}″.format(s))

print(″拆分成元组:{0}″.format(s.partition(″.″)))

seq=[″AAA″,″BBB″,″CCC″,″DDD″]

print(″原列表:{0}″.format(seq))

print(″连接成字符串:{0}″.format(″-″.join(seq)))

【运行结果】

原字符串:AAA,BBB,CCC,DDD

拆分成列表:[′AAA′,′BBB′,′CCC′,′DDD′]

原字符串:AAA+BBB+CCC+DDD

拆分成列表:[′AAA′,′BBB′,′CCC′,′DDD′]

原字符串:demo.py

拆分成元组:(′demo′,′.′,′py′)

原列表:[′AAA′,′BBB′,′CCC′,′DDD′]连接成字符串:AAA-BBB-CCC-DDD

3.3.5 字符串内容测试

对字符串内容属于何种类型可以通过以下方法来测试。

1)s.isalnum():若字符串s中至少包含一个字符且全是字母或数字,则返回True,否则返回alse。

2)s.isalpha():若字符串s中至少包含一个字符且全是字母则返回True,否则返回False。

3)s.isdecimal():若字符串s只包含十进制数字则返回True,否则返回False。

4)s.isdigit():若字符串s只包含数字则返回True,否则返回False。

5)s.islower():若字符串s中至少包含一个字符且全是小写字母,则返回True,否则返回False。

6)s.isnumeric():若字符串s中只包含数字字符,则返回True,否则返回False。

7)s.isspace():若字符串s中只包含空格,则返回True,否则返回False。

8)s.istitle():若字符串s的内容首字母为大写字母,则返回True,否则返回False。

9)s.isupper():若字符串s中至少包含一个字符且全是大写字母则返回True,否则返回False。

【例3.13 】 字符串内容测试操作示例。

【程序代码】

s=″123456ABCDEFG″

print(″\″{0}\″全是字母或数字吗?{1}″.format(s,s.isalnum()))

s=″123456ABCDEFG″

print(″\″{0}\″全是字母吗?{1}″.format(s,s.isalpha()))

s=″1234567890″

print(″\″{0}\″全是数字吗?{1}″.format(s,s.isdigit()))

s=″Python″

print(″\″{0}\″全是小写字母?{1}″.format(s,s.islower()))

print(″\″{0}\″全是大写字母?{1}″.format(s,s.isupper()))

print(″\″{0}\″是首字母大写?{1}″.format(s,s.istitle()))

【运行结果】

″123456ABCDEFG″全是字母或数字吗?True

″123456ABCDEFG″全是字母吗?False

″1234567890″全是数字吗?True

″Python″全是小写字母?False

″Python″全是大写字母?False

″Python″是首字母大写?True 6QrtNuVtpG9pKNJVdfuuGlvvlxAEPo9g1KFLArMbO3h+AOQfeM5XPn5eL6+4YpFY

点击中间区域
呼出菜单
上一章
目录
下一章
×