在Python中,字符串类型可以看成是名称为str的类,而具体的字符串则可以看成由str类定义的对象。字符串对象支持很多方法,可以用来对字符串处理。这些方法需要通过对象名和方法名来调用,其语法格式为:对象名.方法名(参数)。
若要进行字母的大/小写转换,则可以通过以下方法来返回一个新字符串。
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.
若要设置字符串的输出宽度、填充字符和对齐方式,则可以通过以下方法来返回一个新字符串。
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.
对字符串进行搜索操作可以通过以下方法来实现。
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。
字符串的拆分和组合可以通过以下方法来实现。
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
对字符串内容属于何种类型可以通过以下方法来测试。
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