微信公众号:码农充电站pro
个人主页:https://codeshellme.github.io
好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释。
—— Steve McConnell
目录

字符串有很多操作函数,所以,这里我们专门用一节来介绍这些函数。
建议:
由于字符串函数较多,对于新手来说,不必要一开就掌握所有的函数用法,可以先粗略的看一遍,有个大概印象,到真正用的着的时候,再来详细查看也可。用的次数多了,自然就记住了。
我们可以通过dir() 函数来查看一个对象 支持的方法 和属性 有哪些,通过help() 函数查看某个方法 的详情。
注意:
1,对象 的概念会在后续章节详细介绍
2,这里我们无需过多的区分函数 与方法 的不同,暂时可以认为函数 与方法 相同
示例:
s = 'abc' # s 是一个字符串
>>> dir(s) # 查看字符串支持的方法
['__add__','__class__','__contains__','__delattr__','__dir__','__doc__','__eq__','__format__','__ge__','__getattribute__','__getitem__','__getnewargs__','__gt__','__hash__','__init__','__init_subclass__','__iter__','__le__','__len__','__lt__','__mod__','__mul__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__rmod__','__rmul__','__setattr__','__sizeof__','__str__','__subclasshook__','capitalize','casefold','center','count','encode','endswith','expandtabs','find','format','format_map','index','isalnum','isalpha','isdecimal','isdigit','isidentifier','islower','isnumeric','isprintable','isspace','istitle','isupper','join','ljust','lower','lstrip','maketrans','partition','replace','rfind','rindex','rjust','rpartition','rsplit','rstrip','split','splitlines','startswith','strip','swapcase','title','translate','upper','zfill']
>>> help(s.find) # 查看字符串的find 方法详情
Help on built-in function find:
find(...) method of builtins.str instance
# 方法原型
# -> 符号之前是参数
# -> 符号之后时返回值类型
S.find(sub[,start[,end]]) -> int
# 方法介绍
Return the lowest index in S where substring sub is found,such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
# 方法返回值
Return -1 on failure.
(END)
Python 中双下划线 样式的方法__xxx__ ,被称为魔法方法 (这里不做详细介绍),这里我们主要关注非魔法方法 。
这里的dir(s) 显示的所有方法中,除了魔法方法 外,还有44 个方法,我们可以粗略的将这些方法分为以下8 类:
- 字符串查找
- 字符大小写
- 判断字母数字
- 字符串填充
- 字符串格式化
- 字符串截断
- 字符串分割
- 其它方法
下面我们逐一进行介绍。
1,字符串查找
1.find 方法
作用:从左开始查找,返回子串sub 在S[start:end] 中的第一个下标 原型:S.find(sub[,end]]) -> int 参数 sub:子字符串 参数 start:开始位置,可省,默认为 0 参数 end:结束位置,可省,默认为 len(S) 返回值:如果找到返回下标,否则返回 -1
示例:
>>> 'abcabcabc'.find('ca')
2 # 找到了,返回下标
>>> 'abcabcabc'.find('bbc')
-1 # 没找到,返回 -1
2.rfind 方法
作用:从右开始查找,返回子串sub 在S[start:end] 中的第一个下标 原型:S.rfind(sub[,end]]) -> int 参数:同 find 方法 返回值:如果找到返回下标,否则返回 -1
示例:
>>> 'abcabcabc'.rfind('ca')
5
>>> 'abcabcabc'.rfind('bbc')
-1
3.index 方法
作用:从左开始查找,返回子串sub 在S[start:end] 中的第一个下标 原型:S.index(sub[,end]]) -> int 参数 sub:子字符串 参数 start:开始位置,可省,默认为 0 参数 end:结束位置,可省,默认为 len(S) 返回值:如果找到返回下标,否则抛出ValueError 异常
示例:
>>> 'abcabcabc'.index('ca')
2
>>> 'abcabcabc'.index('bbc')
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
ValueError: substring not found # ValueError 异常
关于Python 异常 ,将在后续章节详细介绍
4.rindex 方法
作用:从右开始查找,返回子串sub 在S[start:end] 中的第一个下标 原型:S.rindex(sub[,end]]) -> int 参数:同index 方法 返回值:如果找到返回下标,否则抛出ValueError 异常
示例:
>>> 'abcabcabc'.rindex('ca')
5
>>> 'abcabcabc'.rindex('bbc')
Traceback (most recent call last):
File "<stdin>",in <module>
ValueError: substring not found
5.count 方法
作用:统计子串sub 在S[start:end] 中出现的次数 原型:S.count(sub[,end]]) -> int 参数 sub:子字符串 参数 start:开始位置,可省,默认为 0 参数 end:结束位置,可省,默认为 len(S) 返回值:子串出现的次数
示例:
>>> 'abcabcabc'.count('bc')
3
2,字符大小写
6.capitalize 方法
作用:将字符串S 的首字符变为大写,其余字符变为小写,对中文无效 原型:S.capitalize() -> str 参数:无 返回值:新的字符串
示例:
>>> 'AbCdE'.capitalize()
'Abcde'
7.casefold 方法
作用:将字符串S 中的所有字符变为小写,对中文无效 原型:S.casefold() -> str 参数:无 返回值:新的字符串
示例:
>>> 'AbCdE'.casefold()
'abcde'
8.swapcase 方法
作用:将字符串S 中的大写字符转为小写,小写字符转为大写,对中文无效 原型:S.swapcase() -> str 参数:无 返回值:新的字符串
示例:
>>> 'AbCdE中国'.swapcase()
'aBcDe中国'
9.istitle 方法
作用:判断S 中的单词,是否全都首字母大写,且其它字符小写 原型:S.istitle() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'Abc De fj'.istitle()
False
>>> 'Abc De Fj'.istitle()
True
>>> 'Abc De Fj 中国'.istitle() # 可以有中文
True
>>> '中国'.istitle() # 不能只有中文
False
10.title 方法
作用:将每个非字母后的第一个字母变为大写 原型:S.title() -> str 参数:无 返回值:新的字符串
示例:
>>> 'a3bc-abc abc'.title()
'A3Bc-Abc Abc'
11.islower 方法
作用:判断S 中的字符是否全是小写字符 原型:S.islower() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'abc'.islower()
True
>>> 'aBc'.islower() # 有大写字符,返回 False
False
>>> 'abc中国'.islower() # 英文字符全是小写,且包含中文,返回 True
True
>>> '中国'.islower() # 只有中文,返回 False
False
>>> ''.islower()
False
12.isupper 方法
作用:判断S 中的字符是否全是大写字符 原型:S.isupper() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'ABC'.isupper() # 所有字符全是大写,返回 True
True
>>> 'Abc'.isupper() # 有大写,有小写,返回 False
False
>>> 'ABC中国'.isupper() # 所有字符全是大写,并包含中文,返回 True
True
>>> '中国'.isupper() # 只有中文,返回 False
False
>>> ''.isupper() # 空字符串,返回 False
False
13.lower 方法
作用:将S 中的所有大写字符转为小写 原型:S.lower() -> str 参数:无 返回值:新的字符串
示例:
>>> 'AbC'.lower()
'abc'
14.upper 方法
作用:将S 中的所有小写字符转为大写 原型:S.upper() -> str 参数:无 返回值:新的字符串
示例:
>>> 'AbC'.upper()
'ABC'
3,判断字母数字
15.isalnum 方法
作用:判断S 中所有的字符是否都是字母或数字 原型:S.isalnum() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'abc'.isalnum() # 英文字符,返回 True
True
>>> 'abc123'.isalnum() # 英文字符或数字,返回 True
True
>>> 'abc中国'.isalnum() # 英文字符或汉字,返回 True
True
>>> 'abc;'.isalnum() # 有符号';' 返回 False
False
>>> 'abc-'.isalnum() # 有符号'-' 返回 False
False
>>> ''.isalnum() # 空字符串,返回 False
False
16.isalpha 方法
作用:判断S 中所有的字符是否都是字母 原型:S.isalpha() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'abc'.isalpha() # 都是英文字符,返回 True
True
>>> 'abc中国'.isalpha() # 英文字符和汉字,返回 True
True
>>> 'abc中国123'.isalpha() # 有数字,返回 False
False
>>> 'abc中国-'.isalpha() # 有符号,返回 False
False
>>> ''.isalpha() # 空字符串,返回 False
False
17.isdecimal 方法
作用:判断S 中是否只包含十进制字符 原型:S.isdecimal() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'abc'.isdecimal() # 不包含数字,返回 False
False
>>> 'abc123'.isdecimal() # 除了数字,还有英文字符,返回 False
False
>>> '123'.isdecimal() # 只有数字,返回 True
True
>>> '123-'.isdecimal() # 除了数字,还有符号,返回 False
False
>>> ''.isdecimal() # 空字符串,返回 False
False
>>> '一二三'.isdecimal()
False
18.isdigit 方法
作用:判断S 中是否只包含数字 原型:S.isdigit() -> bool 参数:无 返回值:True 或 False
示例:
>>> '123'.isdigit()
True
>>> '123e'.isdigit()
False
19.isnumeric 方法
作用:判断S 是否只由数字组成,数字可以是罗马数字,汉字数字等 原型:S.isnumeric() -> bool 参数:无 返回值:True 或 False
示例:
>>> '一二三'.isnumeric()
True
>>> '壹贰叁'.isnumeric()
True
>>> '123'.isnumeric()
True
>>> 'abc'.isnumeric()
False
20.isidentifier 方法
作用:判断S 是否是有效的Python 标识符 原型:S.isidentifier() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'abc'.isidentifier()
True
>>> '5abc'.isidentifier() # 不能以数字开头
False
>>> '_5abc'.isidentifier()
True
>>> ' _5abc'.isidentifier() # 不能以空格开头
False
>>> '_5abc;'.isidentifier() # 不能有标点符号
False
21.isprintable 方法
作用:判断S 中的字符,是否全部可打印 原型:S.isprintable() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'abc中国'.isprintable()
True
>>> 'abcn'.isprintable() # 换行符不可见
False
>>> 'abct'.isprintable() # 制表符不可见
False
>>> 'abcr'.isprintable() # 回车符不可见
False
22.isspace 方法
作用:判断S 中是否全是空白字符 原型:S.isspace() -> bool 参数:无 返回值:True 或 False
示例:
>>> 'rnt '.isspace()
True
>>> 'abcrnt '.isspace()
False
4,字符串填充
23.center 方法
作用:返回一个总长度为width 的字符串,S 居中,其它字符以fillchar 填充 原型:S.center(width[,fillchar]) -> str 参数 width:新的字符串的总长度,当 width 小于 S 的长度时,直接返回 S 参数 fillchar:填充字符,可省,默认为空格 返回值:新的字符串
示例:
>>> 'AbCdE'.center(20,'*')
'*******AbCdE********'
24.ljust 方法
作用:以S 左对齐,返回一个长度为width 的新字符串,当len(S) 小于width 时,用fillchar 字符填充 原型:S.ljust(width[,fillchar]) -> str 参数:同 center 方法 返回值:新的字符串
示例:
>>> 'abc'.ljust(5,'*')
'abc**'
>>> 'abc'.ljust(3,'*')
'abc'
25.rjust 方法
作用:类似ljust 方法,本方法为右对齐 原型:S.rjust(width[,fillchar]) -> str 参数:同 center 方法 返回值:新的字符串
示例:
>>> 'abc'.rjust(5,'*')
'**abc'
>>> 'abc'.rjust(3,'*')
'abc'
26.zfill 方法
作用:效果同 rjust(width,'0') 原型:S.zfill(width) -> str 参数:width 为新的字符串的总长度 返回值:新的字符串
>>> 'abc'.zfill(5)
'00abc'
>>> 'abc'.rjust(5,'0')
'00abc'
5,字符串格式化
27.format 方法
作用:用于格式化字符串,用format 方法中的参数依次替代S 中的大括号{} 原型:S.format(*args,**kwargs) -> str 参数:任意参数列表 返回值:返回格式化后的字符串
示例:
>>> '{} {} {}'.format('hello','python',123) # {} 中不写下标
'hello python 123'
>>> '{2} {0} {1}'.format('hello',123) # {} 中写下标
'123 hello python'
28.format_map 方法
作用:类似format 方法的作用,只是接受的参数类型不同,大括号{} 中必须是字典 对象的键 原型:S.format_map(mapping) -> str 参数:一个字典类型的对象 返回值:返回格式化后的字符串
示例:
>>> '{a} {b}'.format_map({'a':1,'b':2})
'1 2'
关于字典 类型,将在后续章节详细介绍
6,字符串截断
29.lstrip 方法
作用:从左开始,截去字符串S 中的字符chars ,直到第一个不是chars 的字符 原型:S.lstrip([chars]) -> str 参数:chars 可以是任意长度的字符串,每个包含在chars 中的字符,都会被截去。可省,默认为空格 返回值:新的字符串
示例:
>>> 'abcabcabc'.lstrip('b')
'abcabcabc'
>>> 'abcabcabc'.lstrip('a')
'bcabcabc'
>>> 'abcabcabc'.lstrip('ab')
'cabcabc'
>>> 'abcabcabc'.lstrip('abc')
''
30.rstrip 方法
作用:从右开始,截去字符串S 中的字符chars ,直到第一个不是chars 的字符 原型:S.rstrip([chars]) -> str 参数:同 lstrip 返回值:新的字符串
示例:
>>> 'abcabcabc'.rstrip('b')
'abcabcabc'
>>> 'abcabcabc'.rstrip('c')
'abcabcab'
>>> 'abcabcabc'.rstrip('bc')
'abcabca'
>>> 'abcabcabc'.rstrip('abc')
''
31.strip 方法
作用:先执行lstrip 再执行 rstrip 原型:S.strip([chars]) -> str 参数:同 lstrip 返回值:新的字符串
示例:
>>> 'abcabcabc'.strip('b')
'abcabcabc'
>>> 'abcabcabc'.strip('ba')
'cabcabc'
>>> 'abcabcabc'.strip('bac')
''
7,字符串分割
32.strip 方法
作用:从左到右,以字符串sep 来分割字符串S ,最多分割maxsplit 次 原型:S.split(sep=None,maxsplit=-1) -> list of strings 参数 sep:sep 可以是任意长度的字符串,默认为任意空白符 参数 maxsplit:分割的最大次数,默认不限次数 返回值:字符串列表
示例:
>>> 'a3bc-abc-ab efthhnmn'.split()
['a3bc-abc-ab','ef','hh','mn']
>>> 'a3bc-abc-ab efthhnmn'.split(maxsplit=2)
['a3bc-abc-ab','hhnmn']
>>> 'a3bc-abc-ab efthhnmn'.split('a')
['','3bc-','bc-','b efthhnmn']
>>> 'a3bc-abc-ab efthhnmn'.split('bc')
['a3','-a','-ab efthhnmn']
33.rsplit 方法
作用:从右到左,以字符串sep 来分割字符串S ,最多分割maxsplit 次 原型:S.rsplit(sep=None,maxsplit=-1) -> list of strings 参数:同strip 方法 返回值:字符串列表
示例:
>>> 'a3bc-abc-ab efthhnmn'.rsplit()
['a3bc-abc-ab','mn']
>>> 'a3bc-abc-ab efthhnmn'.rsplit(maxsplit=2)
['a3bc-abc-ab ef','mn']
>>> 'a3bc-abc-ab efthhnmn'.rsplit('bc')
['a3','-ab efthhnmn']
34.splitlines 方法
作用:对字符串S 进行行分割 ,换行符为r ,n ,rn 原型:S.splitlines([keepends]) -> list of strings 参数:keepends 为True 或 False ,为True 时保留换行符,为False 时不保留换行符,默认为False 返回值:字符串列表
示例:
>>> 'a3bc-abc-ab efthhnmn'.splitlines()
['a3bc-abc-ab efthh','mn']
>>> 'a3bc-abc-ab efthhnmn'.splitlines(True)
['a3bc-abc-ab efthhn','mn']
8,其它方法
35.encode 方法
作用:对S 以encoding 指定的编码格式进行编码 原型:S.encode(encoding='utf-8',errors='strict') -> bytes 参数 encoding:以什么编码格式进行编码,默认是utf-8 参数 errors:发生错误时的处理方式,默认为strict ,其它可选值有ignore ,replace ,xmlcharrefreplace 返回值:S 的字节形式值
示例:
>>> s = '中国'
>>> s.encode('utf8')
b'xe4xb8xadxe5x9bxbd'
36.join 方法
作用:用于连接迭代器iterable 中的所有元素,分隔符为S 原型:S.join(iterable) -> str 参数:可迭代类型数据 返回值:新的字符串
示例:
>>> ','.join('abc')
'a,b,c'
>>> '|'.join('abc')
'a|b|c'
关于可迭代 类型,将在后续章节详细介绍,这里只需要知道字符串就是一种可迭代类型
37.startswith 方法
作用:判断字符串S[start:end] 是否以子串prefix 开头 原型:S.startswith(prefix[,end]]) -> bool 参数 prefix:子字符串 参数 start:开始位置,可省,默认为 0 参数 end:结束位置,可省,默认为 len(S) 返回值:True 或 False
示例:
>>> 'abcabcabc'.startswith('abc')
True
>>> 'abcabcabc'.startswith('bc')
False
38.endswith 方法
作用:判断字符串S[start:end] 是否以子串suffix 结尾 原型:S.endswith(suffix[,end]]) -> bool 参数 suffix:子字符串 参数 start:开始位置,可省,默认为 0 参数 end:结束位置,可省,默认为 len(S) 返回值:True 或 False
示例:
>>> 'abcabcabc'.endswith('bc')
True
>>> 'abcabcabc'.endswith('bcd')
False
39.replace 方法
作用:从左到右,将S 中的 old 转换成 new ,最多转换 count 次 原型:S.replace(old,new[,count]) -> str 参数 old:源字符串,可以是任意长度 参数 new:目标字符串,可以是任意长度 参数 count:最多转换 count 次 返回值:新的字符串
示例:
>>> 'abcabcabc'.replace('a','1')
'1bc1bc1bc'
>>> 'abcabcabc'.replace('a','111')
'111bc111bc111bc'
>>> 'abcabcabc'.replace('ab','1')
'1c1c1c'
>>> 'abcabcabc'.replace('a','1',2)
'1bc1bcabc'
40.expandtabs 方法
作用:将S 中的tab 转为空格,tab 即t 原型:S.expandtabs(tabsize=8) -> str 参数 tabsize:一个tab 转为空格的个数与tab 之前的子串长度之和为tabsize ,默认为 8 返回值:新的字符串
示例:
>>> 'atbcatbcatbc'.expandtabs(4)
'a bca bca bc'
>>> 'atbcatbcatbc'.expandtabs(4).replace(' ','-')
'a---bca-bca-bc' # 为了方便显示空格的个数,将空格替换为横线
>>> 'atbcatbcatbc'.expandtabs(8)
'a bca bca bc'
>>> 'atbcatbcatbc'.expandtabs(8).replace(' ','-')
'a-------bca-----bca-----bc' # 为了方便显示空格的个数,将空格替换为横线
通过下图可以更好的理解expandtabs() 的含义:

41.maketrans 方法
作用:用于创建一个字符映射,常与 translate 方法配合使用 原型:maketrans(x,y=None,z=None,/) 参数:当只有1 个参数时,必须是一个字典。当有2 个参数时,是两个字符串,且这两个字符串的长度必须相同 返回值:一个字典类型的数据
示例:
>>> str.maketrans({'a':'1','b':'2','c':'3','d':'好'})
{97: '1',98: '2',99: '3',100: '好'}
>>> str.maketrans('abcd','123好')
{97: 49,98: 50,99: 51,100: 22909}
42.translate 方法
作用:将字符串S 使用table 进行替换 原型:S.translate(table) -> str 参数:是一个字典类型 返回值:新的字符串
示例:
>>> x = str.maketrans('abc','123')
>>> x
{97: '1',100: '好'}
>>> 'axxxbxxxcxxx'.translate(x) # a->1 b->2 c->3
'1xxx2xxx3xxx'
43.partition 方法
作用:从左边开始,将字符串S 用sep 进行分隔,只会进行一次分隔 原型:S.partition(sep) -> (head,sep,tail) 参数:sep 可以是任意长度的字符串 返回值:返回一个三元组(head,tail),head 是分隔后的前半部分,tail 是后半部分,sep 是分隔符
示例:
>>> 'abcabcabc'.partition('c')
('ab','c','abcabc')
>>> 'abcabcabc'.partition('bc')
('a','bc','abcabc')
>>> 'abcabcabc'.partition('abc')
('','abc','abcabc')
44.rpartition 方法
作用:从右边开始,将字符串S 用sep 进行分隔,只会进行一次分隔 原型:S.rpartition(sep) -> (head,tail) 参数:同 partition 方法 返回值:同 partition 方法
示例:
>>> 'abcabcabc'.rpartition('c')
('abcabcab','')
>>> 'abcabcabc'.rpartition('bc')
('abcabca','')
>>> 'abcabcabc'.rpartition('abc')
('abcabc','')
(完。)
推荐阅读:
Python 简明教程 --- 3,Python 基础概念
Python 简明教程 --- 4,Python 变量与基本数据类型
Python 简明教程 --- 5,Python 表达式与运算符
Python 简明教程 --- 6,Python 控制流
[Python 简明教程 --- 7,Python 字符串]https://www.cnblogs.com/codeshell/p/12958246.html)
欢迎关注作者公众号,获取更多技术干货。
 (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|