python中字符串对象提供了很多方法来操作字符串,功能相当丰富。必须进行全面的了解与学习,后面的代码处理才能更得心应手,编程水平走向新台阶的坚实基础。目前一共有45个方法,给大家分类整理,可以收藏查询使用。 #获取字所有的符串方法print(dir(str))[...,'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', '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'] 描述:将字符串的第一个字母变成大写,其余字母变为小写。 语法:str.capitalize() 示例: 02、title()描述:返回一个满足标题格式的字符串。即所有英文单词首字母大写,其余英文字母小写。 语法:str.title() 示例: 'i am very love python'.title()'I Am Very Love Python' 描述:将字符串str中的大小写字母同时进行互换。即将字符串str中的大写字母转换为小写字母,将小写字母转换为大写字母。 语法:str.swapcase() 示例: 04、lower()描述:将字符串中的所有大写字母转换为小写字母。 语法:str.lower() 示例: '我爱pythoN Python!'.lower()'我爱python python!' 描述:将字符串中的所有小写字母转换为大写字母。 语法: str.upper() 示例: 06、casefold()描述:将字符串中的所有大写字母转换为小写字母。也可以将非英文 语言中的大写转换为小写。 注意 :lower()函数和casefold()函数的区别:lower() 方法只对ASCII编码,即‘A-Z’有效,对于其它语言中把大写转换为小写的情况无效,只能用 casefold() 函数。 语法:str.casefold() 示例: 'Groß - α'.casefold()#德语 'gross - α''I am verY love python'.casefold()'i am very love python' 描述:返回一个长度为width,两边用fillchar(单字符)填充的字符串,即字符串str居中,两边用fillchar填充。若字符串的长度大于width,则直接返回字符串str。 语法:str.center(width , 'fillchar')
示例: 08、ljust()描述:返回一个原字符串左对齐,并使用fillchar填充(默认为空格)至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。 语法: str.ljust(width, fillchar) -> str 返回一个新的字符串
示例: 'shuai'.ljust(10)'shuai ''shuai'.ljust(10,'*')'shuai*****'L = ['Jack','jenny','joe'][name.ljust(10,'#') for name in L]['Jack######', 'jenny#####', 'joe#######'] for name in L: print(name.ljust(10,'#'))Jack######jenny#####joe###### 描述:返回一个原字符串右对齐,并使用fillchar填充(默认为空格)至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。 语法: str.ljust(width, fillchar)
示例: 10、zfill()描述:返回指定长度的字符串,使原字符串右对齐,前面用0填充到指定字符串长度。 语法:str.zfill(width) width —— 指定字符串的长度,但不能为空。若指定长度小于字符串长度,则直接输出原字符串。 示例: '12'.zfill(10)'0000000012' #对用户ID进行填充L=['56783','34','987766721','326'] [id.zfill(10) for id in L]['0000056783', '0000000034', '0987766721', '0000000326']for id in L: print(id.zfill(10))0000056783000000003409877667210000000326 #等价于用0填充的右对齐[id.rjust(10,'0') for id in L]['0000056783', '0000000034', '0987766721', '0000000326 描述:以指定的编码格式编码字符串,默认编码为 'utf-8'。encode英文原意 编码。 语法:str.encode(encoding='utf-8', errors='strict')
示例: 12、decode()描述:以 encoding 指定的编码格式解码字符串,默认编码为字符串编码。decode英文意思是 解码, 语法:str.decode(encoding='utf-8', errors='strict')
示例: str1 = '我爱学习'.encode(encoding='utf-8')str1b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0'str1.decode(encoding='utf-8')'我爱学习' 四、字符串查找13、find() 描述:查找字符串中指定的子字符串sub第一次出现的位置,可以规定字符串的索引查找范围。若无则返回 -1。 语法:str.find(sub,start,end) -> int 返回整数 参数:
示例: 14、rfind()描述:查找字符串中指定的子字符串sub最后一次出现的位置,可以规定字符串的索引查找范围。若无则返回 -1。 语法:str.rfind(sub,start,end) -> int 返回整数 参数:
注:rfind()函数用法与find()函数相似,rfind()函数返回指定子字符串最后一次出现的位置,find()函数返回指定子字符串第一次出现的位置。 示例: #查找子字符串'o''I love python'.find('o')3#索引起始位置为4 索引范围为:ve python'I love python'.find('o',4)11#索引起始位置为4,结束位置为12 索引范围为:ve pytho'I love python'.find('o',4,12 描述:查找字符串中第一次出现的子字符串的位置,可以规定字符串的索引查找范围[star,end)。若无则会报错。 语法:str.index(sub, start, end) -> int 返回整数 参数:
示例: 16、rindex()描述: rindex() 方法返回子字符串最后一次出现在字符串中的索引位置,该方法与 rfind() 方法一样,可以规定字符串的索引查找范围[star,end),只不过如果子字符串不在字符串中会报一个异常。 语法:str.rindex(sub, start, end) -> int 返回整数。 参数:
示例: 'I love python'.rindex('o')11'I love python'.index('o')3'I love python'.rindex('k')ValueError: substring not found'I love python'.rfind('k' 描述:Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。使用format()来格式化字符串时,使用在字符串中使用{}作为占位符,占位符的内容将引用format()中的参数进行替换。可以是位置参数、命名参数或者兼而有之。 format 函数可以接受不限个参数,位置可以不按顺序。 语法:format(value, format_spec) 参数: 示例: 18、format_map()描述:返回字符串的格式化版本。在Python3中使用format和format_map方法都可以进行字符串格式化,但format是一种所有情况都能使用的格式化方法,format_map仅使用于字符串格式中可变数据参数来源于字典等映射关系数据时才可以使用。 语法:str.format_map(mapping) -> str 返回字符串 参数:mapping 是一个字典对象 示例: People = {'name': 'john', 'age': 33}'My name is {name},iam{age} old'.format_map(People)#对比案例定义一个字典student = {'name':'张三','class':'20200504','score':748}使用format输出相关信息:'{st[class]}班{st[name]}总分:{st[score]}'.format(st=student)'20200504班张三总分:748'format_map方法后如下'{class}班{name}总分:{score}'.format_map(student)'20200504班张三总分:7 描述:判断字符串是否以指定字符或子字符串结尾。 语法:str.endswith('suffix', start, end) 或str[start,end].endswith('suffix') 用于判断字符串中某段字符串是否以指定字符或子字符串结尾。—> bool 返回值为布尔类型(True,False) 参数:
注意:空字符的情况。返回值通常为True 示例: 20、startswith()描述:判断字符串是否以指定字符或子字符串开头。 语法:str.endswith('suffix', start, end) 或 str[start,end].endswith('suffix') 用于判断字符串中某段字符串是否以指定字符或子字符串结尾。 —> bool 返回值为布尔类型(True,False) 参数:
注意:空字符的情况。返回值通常也为True 示例: 'hello,i love python'.startswith('h')True'hello,i love python'.startswith('l',2,10)# 索引 llo,i lo 是否以“l”开头。True'hello,i love python'.startswith('') #空字符True'hello,i love python'[0:6].startswith('h') # 只索引 hello,True'hello,i love python'[0:6].startswith('e')False'hello,i love python'[0:6].startswith('')True'hello,i love python'.startswith(('h','z'))#遍历元组的元素,存在即返回True,否者返回FalseTrue'hello,i love python'.startswith(('k','m'))False 描述:检测字符串是否由字母和数字组成。str中至少有一个字符且所有字符都是字母或数字则返回 True,否则返回 False 语法:str.isalnum() -> bool 返回值为布尔类型(True,False) 参数: 示例: 22、isalpha()描述:检测字符串是否只由字母组成。字符串中至少有一个字符且所有字符都是字母则返回 True,否则返回 False。 语法:str.isalpha() -> bool 返回值为布尔类型(True,False) 参数:无 示例: 'I love python'.isalpha()#存在空格返回FalseFalse'Ilovepython'.isalpha()True'Ilovepython123'.isalpha()Fals 描述:检查字符串是否只包含十进制字符。字符串中若只包含十进制字符返回True,否则返回False。该方法只存在于unicode对象中。注意:定义一个十进制字符串,只需要在字符串前添加前缀 'u' 即可。 语法: str.isdecimal() -> bool 返回值为布尔类型(True,False) 参数:无 示例: 24、isdigit()描述:检测字符串是否只由数字组成.字符串中至少有一个字符且所有字符都是数字则返回 True,否则返回 False。 语法:str.isdigit() -> bool 返回值为布尔类型(True,False) 参数:无 注:能判断“①”,不能判断中文数字。但 isnumeric() 函数可以。 示例: 'python'.isdigit() #全为字母False'123'.isdigit() #全为数字True'python666'.isdigit() #字母和数字的组合False'一二三四五六七'.isdigit() #中文数字输出FalseFalse'①'.isdigit() True 描述:判断str是否是有效的标识符。str为符合命名规则的变量,保留标识符则返回True,否者返回False。 语法:str.isidentifier() -> bool 返回值为布尔类型(True,False) 参数:无 示例: 26、islower()描述:检测字符串中的字母是否全由小写字母组成。(字符串中可包含非字母字符)字符串中包含至少一个区分大小写的字符,且所有这些区分大小写的字符都是小写,则返回 True,否则返回 False。 语法:str.islower() -> bool 返回值为布尔类型(True,False) 参数:无 示例: #字符串中的字母全为小写'i love python'.islower() True #字符串中的字母全为小写,也存在非字母的字符'我爱python!'.islower() True#字符串中有大写字符'I love python'.islower() False 描述:检测字符串中的字母是否全由大写字母组成。(字符串中可包含非字母字符)。字符串中包含至少一个区分大小写的字符,且所有这些区分大小写的字符都是大写,则返回 True,否则返回 False。 语法:str.isupper() -> bool 返回值为布尔类型(True,False) 参数:无 示例: 28、inumeric()描述:测字符串是否只由数字组成。这种方法是只适用于unicode对象。字符串中只包含数字字符,则返回 True,否则返回 False。 语法:str.isnumeric() -> bool 返回值为布尔类型(True,False) 参数:无 示例: u'123456'.isnumeric() #全为数字True'123456'.isnumeric()True'python666'.isnumeric() #字母数字组合False'一二三四五六'.isnumeric() #中文数字True'①'.isnumeric()Tr 描述:判断字符串中是否有打印后不可见的内容。如:\n \t 等字符。若字符串中不存在\n \t 等不可见的内容,则返回True,否者返回False。 语法: str.isprintable() -> bool 返回值为布尔类型(True,False) 参数:无 示例: 30、isspace()描述: 检测字符串是否只由空格组成。若字符串中只包含空格,则返回 True,否则返回 False。 语法:str.isspace() -> bool 返回值为布尔类型(True,False) 参数:无 示例: str1 = ' '#空格str2 = 'i love python' print(str1.isspace())Trueprint(str2.isspace())Falseprint(str2[1].isspace()) #字符串str2 的第二个字符为空格True 描述:检测判断字符串中所有单词的首字母是否为大写,且其它字母是否为小写,字符串中可以存在其它非字母的字符。若字符串中所有单词的首字母为大写,且其它字母为小写,则返回 True,否则返回 False. 语法:str.istitle() -> bool 返回值为布尔类型(True,False) 参数:无 示例: 七、字符串修剪32、strip()描述:该函数的作用是去除字符串开头和结尾处指定的字符,不会去除字符串中间对应的字符 语法:str.strip(chars) 参数:chars -- 要去除的字符 默认为空格或换行符。 示例: #默认参数,去除了空格,\n \t \r字符,且未除去字符串中间相应的字符a = ' \n111 aaa 'print(a.strip())111 aaa#去除两端的指定字符b='.-.word:我很帅.-.'print(b.strip('.-.'))word:我很帅c='参考:来自公众号AI入门学习'print(c.strip('参考:'))来自公众号AI入门学 描述:lstrip() 方法用于截掉字符串左边的空格或指定字符。 语法:str.lstrip(chars) 参数:chars--要去除的字符 默认为空格或换行符。 示例: 34、 rstrip()描述: 删除 str 字符串末尾的指定字符(默认为空格) 语法:str.rstrip(chars) 参数:chars --要去除的字符 默认为空格或换行符。 示例: #去除左边指定字符a = '6234412134445533-456'a.rstrip('-456')'6234412134445533'#对一个列表所有的字符串进行去除ls = ['34667777777-456','62344121344433-456','28993333455-456'][i.rstrip('-456') for i in ls]['34667777777', '62344121344433', '28993333'] 描述:制作翻译表,删除表,常与translate()函数连用。 即:返回用于str.translate方法翻译的转换表。 语法:str.maketrans(intab, outtab,delchars) 参数:
示例: 36、translate()描述:过滤(删除),翻译字符串。即根据maketrans()函数给出的字符映射转换表来转换字符串中的字符。 注:translate()函数是先过滤(删除),再根据maketrans()函数返回的转换表来翻译。 语法:str.translate(table) 参数: 示例: 见上述案例 描述:根据指定的分隔符(sep)将字符串进行分割。从字符串左边开始索引分隔符sep,索引到则停止索引。 语法: str.partition(sep) 参数:sep —— 指定的分隔符。 返回值:(head, sep, tail) 返回一个三元元组,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,则返回一个三元元组,第一个为分隔符sep左边的子字符串,第二个为分隔符sep本身,第三个为分隔符sep右边的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一个三元元组,第一个元素为字符串本身,第二第三个元素为空字符串 示例: 38、rpartition()描述:根据指定的分隔符(sep)将字符串进行分割。从字符串右边(末尾)开始索引分隔符sep,索引到则停止索引。 语法: str.rpartition(sep) 参数:sep —— 指定的分隔符。 返回值: (head, sep, tail) 返回一个三元元组,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,则返回一个三元元组,第一个为分隔符sep左边的子字符串,第二个为分隔符sep本身,第三个为分隔符sep右边的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一个三元元组,第一个元素为字符串本身,第二第三个元素为空字符串。 注:rpartition()函数与partition()函数用法相似,rpartition()函数从右边(末尾)开始索引,partition()函数从左边开始索引。 示例: string = 'https://www./'string.rpartition('.') #字符串str中不存在sep',',返回了两个空字符串。 ('https://www.google.com', '.', 'hk/')string.partition('.') #字符串str中不存在sep',',返回了两个空字符串。('https://www', '.', '/') 描述:拆分字符串。通过指定分隔符sep对字符串进行分割,并返回分割后的字符串列表。 语法: str.split(sep=None, maxsplit=-1) [n]
示例: 40、rsplit()描述:拆分字符串。通过指定分隔符sep对字符串进行分割,并返回分割后的字符串列表,类似于split()函数,只不过 rsplit()函数是从字符串右边(末尾)开始分割。 语法:str.rsplit(sep=None, maxsplit=-1) -> list of strings 返回 字符串列表 或str.rsplit(sep=None, maxsplit=-1)[n] 参数:
示例: # 只搜索到一个sep时,两者结果相同'abcxyzopq'.partition('xy')('abc', 'xy', 'zopq')'abcxyzopq'.rpartition('xy')('abc', 'xy', 'zopq')# 搜索到多个sep时,分别从左第一个、右第一个sep分割'abcxyzopxyq'.partition('xy')('abc', 'xy', 'zopxyq')'abcxyzopxyq'.rpartition('xy')('abcxyzop', 'xy', 'q 描述:按照('\n', '\r', \r\n'等)分隔,返回一个包含各行作为元素的列表,默认不包含换行符。\n 换行符 \r 回车符 \r\n 回车+换行 语法:S.splitlines([keepends=False]) 参数:keepends -- 在输出结果里是否去掉行界符('\r', '\r\n', \n'等),默认为 False,不包含行界符,如果为 True,则保留行界符。 示例: 42、join()描述:将iterable变量的每一个元素后增加一个str字符串。 语法: sep.join(iterable)
示例: python中经常看到join,特别是在自然语言处理的时候,分词什么的,但是很多初学者不理解其中的意思,这里进行详细的介绍,希望对大家能有帮助。将可迭代对象(iterable)中的字符串使用string连接起来。注意,iterable中必须全部是字符串类型,否则报错。如果你还是python的初学者,还不知道iterable是什么,却想来看看join的具体语法,那么你可以暂时将它理解为:字符串string、列表list、元组tuple、字典dict、集合set。当然还有生成器generator等也可以用该方法。1)字符串L='python''_'.join(L)'p_y_t_h_o_n''_uu_'.join(L)'p_uu_y_uu_t_uu_h_uu_o_uu_n'2)元组L1=('1','2','3')'_'.join(L1)'1_2_3'3)集合。注意,集合无序。L2={'p','y','t','h','o','n'}'_'.join(L2)'t_n_o_h_y_p'4)列表L2=['py','th','o','n']'_'.join(L2)'py_th_o_n'5)字典L3={'name':'malongshuai','gender':'male','from':'China','age':18}'_'.join(L3)'name_gender_from_age'6)iterable参与迭代的部分必须是字符串类型,不能包含数字或其他类型。L1=(1,2,3)'_'.join(L1)TypeError: sequence item 0: expected str instance, int found以下两种也不能join。L1=('ab',2)L2=('AB',{'a',' 描述:把str.中的 old 替换成 new,如果 count 指定,则替换不超过 count次.。 语法:str.replace(old, new, count) 参数:
案例: 44、expandtabs()描述:将字符串S中的 \t 替换为一定数量的空格。默认N=8。 语法: str.expandtabs(tabsize=8) tabsize 的默认值为8。tabsize值为0到7等效于tabsize=8。tabsize每增加1,原字符串中“\t”的空间会多加一个空格。 示例: '01\t012\t0123\t01234'.expandtabs(4)'01 012 0123 01234''01\t012\t0123\t01234'.expandtabs(8)'01 012 0123 01234' 描述:统计字符串里某个字符出现的次数。可以选择字符串索引的起始位置和结束位置。 语法:str.count('char', start,end) 或 str.count('char')
示例:
|
|
来自: copy_left > 《python相关》