字符串

五、字符串

字符串的基本操作与元组类似,和元组一样一旦创建就不能被修改,故修改字符串的方式也和元组一样是通过分片再拼接,构成一个新的字符串来实现。所有逻辑操作符在字符串中也可用。

1、字符串常用方法

(1) capitalize() / casefold()
把字符串开头第一个字符改为大写

str1 = 'august'
print(atr1.capitalize())

输出结果:'August'

把字符串所有字符改为小写

str2 = 'FWtY'
print(str2.casefold())

输出结果:'fwty'

(3) count()
返回某子串在字符串中出现的次数

count(<子串>[, <起始位置>[, <结束位置>]])

str3 = 'abababbbabc'
print(str3.count('ab')) #不写起止位置则从整个字符串查询

输出结果:4

(4)endswith()
检测字符串是否以指定子串结尾,是则返回True,否则返回False

endwith(<子串>[, <起始位置>[, <结束位置>]])

print(str3.endswith('abc'))

输出结果:True

(5) expandtabs()
将字符串中的tab符号(\t)转换为空格,若不指定参数,默认空格数为8

expandtabs([tabsize=<空格数>])

str4 = 'I\tam\tAugust'
print(str4.expandtabs())

输出结果:I       am      August

(6) find() / index()
检测某子串是否在字符串中,有则返回索引值,没有则返回-1

find(<子串>[, <起始位置>[, <结束位置>]])

print(str3.find('ab'))

输出结果:0 #若有多个位置则返回第一个位置的索引

作用与find()方法相同,不过如果子串不在字符串中则产生一个异常

index(<子串>[, <起始位置>[, <结束位置>]])

str3.index('d')

输出结果:ValueError: substring not found

(7) isalnum(
如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

(8) isalpha()
如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

(9) isdecimal()
如果字符串只包含十进制数字则返回 True,否则返回 False

(10) isdigit()
如果字符串只包含数字则返回 True,否则返回 False

(11) islower() / supper()
islower()如果字符串中至少包含一个区分大小写的字符,且这些字符都是大写,则返回 True,否则返回 False
supper()如果字符串中至少包含一个区分大小写的字符,且这些字符都是小写,则返回 True,否则返回 False

str5 = '夫无天元'
str1 = 'august'
str2 = 'FWTY'
print(str1.islower(), str5.islower(), str2.isupper())

输出结果:True False True

(12) isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False

(13) isspace()
如果字符串中只包含空格,则返回 True,否则返回 False

(14) istitle()
如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False

str1 = 'august'
str6 = 'August'
print(str1.istitle(), str2.istitle())

输出结果:False True

(15) join()
以子串作为分隔符,插入到字符串所有的字符之间

str1 = 'august'
print(str1.(' '))

输出结果:a u g u s t

(16) lower()
转换字符串中所有大写字符为小写
与casefold()的区别是lower函数只支持ascill表中的字符,而casefold则支持很多不同种类的语言

(17) lstrip()
去掉字符串左边的所有空格

str7 = 'I am August'
print(str7.lstrip)

输出结果:‘IamAugust’

(18) partition(sub)
找到子串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')

str7 = 'I am August'
print(str7.partition('ug'))

输出结果:('I am A', 'ug', 'ust')

(19) replace(old, new[, count])
把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次

str1 = 'august'
print(str1.replace('u','hhh'))

输出结果:ahhhghhhst

(20) rfind(sub[, start[, end]])
类似于 find() 方法,不过是从右边开始查找

(21) rindex(sub[, start[, end]])
类似于 index() 方法,不过是从右边开始

(22) rpartition(sub)
类似于 partition() 方法,不过是从右边开始查找

(23) rstrip()
删除字符串末尾的空格

(24) split(sep=None, maxsplit=-1)
不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表

str7 = 'I am August'
print(str7.split())

输出结果:['I', 'am', 'August']

(25) splitlines(([keepends]))
在输出结果里是否去掉换行符’\n’,默认为 False,不包含换行符;如果为 True,则保留换行符

(26) startswith(prefix[, start[, end]])
检查字符串是否以 prefix 开头,是则返回 True,否则返回 False; start 和 end 参数可以指定范围检查,可选

(27) strip([chars])
删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选

str8 = 'ssssaaassss'
print(str8.strip('s'))

输出结果:aaa

(28) swapcase()
翻转字符串中的大小写

(29) title()
返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串

(30) translate(table)
根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符

str8 = 'ssssaaassss'
print(str8.translate(str.maketrans('s', 'b')))

输出结果:bbbbaaabbbb

(31) upper()
转换字符串中的所有小写字符为大写