Python中的44个字符串方法使用实践
郝伟 2022/11/05 10:52:29 星期六
本文参考 45个处理字符串的Python方法,做了进一步的封装,并进行了验证,同时修正了几个错误。
其他参考:

方法 描述
string.capitalize()
把字符串的第一个字符大写
string.center(width)
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
string.count(str, beg=0, end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
string.decode(encoding=‘UTF-8’, errors=‘strict’)
以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’
string.encode(encoding=‘UTF-8’, errors=‘strict’)
以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
string.endswith(obj, beg=0, end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
string.expandtabs(tabsize=8)
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
string.find(str, beg=0, end=len(string))
检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.format()
格式化字符串
string.index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在 string中会报一个异常.
string.isalnum()
如果 string 至少有一个字符并且所有字符都是字母或数字则返
回 True,否则返回 False
string.isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True,
否则返回 False
string.isdecimal()
如果 string 只包含十进制数字则返回 True 否则返回 False.
string.isdigit()
如果 string 只包含数字则返回 True 否则返回 False.
string.islower()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isnumeric()
如果 string 中只包含数字字符,则返回 True,否则返回 False
string.isspace()
如果 string 中只包含空格,则返回 True,否则返回 False.
string.istitle()
如果 string 是标题化的(见 title())则返回 True,否则返回 False
string.isupper()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
string.join(seq)
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
string.ljust(width)
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.lower()
转换 string 中所有大写字符为小写.
string.lstrip()
截掉 string 左边的空格
string.maketrans(intab, outtab])
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
max(str)
返回字符串 str 中最大的字母。
min(str)
返回字符串 str 中最小的字母。
string.partition(str)
有点像 find()和 split()的结合体,从 str 出现的第一个位置起, 把字符串string分成一个3元素的元组(string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
string.replace(str1, str2, num=string.count(str1))
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
string.rfind(str, beg=0,end=len(string) )
类似于 find()函数,不过是从右边开始查找.
string.rindex( str, beg=0,end=len(string))
类似于 index(),不过是从右边开始.
string.rjust(width)
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.rpartition(str)
类似于 partition()函数,不过是从右边开始查找
string.rstrip()
删除 string 字符串末尾的空格.
string.split(str="", num=string.count(str))
以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
string.splitlines([keepends])
按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
string.startswith(obj, beg=0,end=len(string))
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
string.strip([obj])
在 string 上执行 lstrip()和 rstrip()
string.swapcase()
翻转 string 中的大小写
string.title()
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
string.translate(str, del="")
根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
string.upper()
转换 string 中的小写字母为大写
string.zfill(width)
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
输入字符串:https://www.python-office.com {content}
------------------------------------- 1、拼接 -------------------------------------
1.'-'.join(s1): h-t-t-p-s-:-/-/-w-w-w-.-p-y-t-h-o-n---o-f-f-i-c-e-.-c-o-m- -{-c-o-n-t-e-n-t-}
2.s1.center(100, '*'): ******************************https://www.python-office.com {content}*******************************
3.s1.ljust(50, '*'): https://www.python-office.com {content}***********
4.s1.rjust(50, '*'): ***********https://www.python-office.com {content}
5.s1.zfill(50): 00000000000https://www.python-office.com {content}
------------------------------------- 2、查找 -------------------------------------
6.s1.count('p'): 2
7.s1.find('pip'): -1
str.index('pip') 由于 pip 不存在会报异常。
8.s1.rfind(' '): 29
9.s1.rindex(' '): 29
----------------------------------- 3、分割和替换 ------------------------------------
10.s1.replace(' ', '-')) # 替换操作,str.replace(: https://www.python-office.com-{content}
11.s1.partition(' '): ('https://www.python-office.com', ' ', '{content}')
12.s1.rpartition(' ')) # 类似于 partition(: ('https://www.python-office.com', ' ', '{content}')
13.s1.rsplit(' '): ['https://www.python-office.com', '{content}']
14.s1.split(' '): ['https://www.python-office.com', '{content}']
15.s1.splitlines()) # 按照行界符('\r', '\r\n', \n'等: ['https://www.python-office.com {content}']
16.s1.lstrip('p'): https://www.python-office.com {content}
17.s1.rstrip('p'): https://www.python-office.com {content}
18.s1.strip(): https://www.python-office.com {content}
----------------------------------- 4、大小写操作 ------------------------------------
19.s1.capitalize(): Https://www.python-office.com {content}
20.s1.lower(): https://www.python-office.com {content}
21.s1.casefold(): https://www.python-office.com {content}
33.s1.islower()) # islower(: True
34.s1.isupper(): False
35.s1.isnumeric(): False
36.s1.isprintable(): True
37.s1.isspace(): False
38.s1.istitle(): False
----------------------------------- 6、其他静态方法 -----------------------------------
39.str.maketrans('12345', 'hello'): {49: 104, 50: 101, 51: 108, 52: 108, 53: 111}
40.s1.translate(str.maketrans('12345', 'hello')): https://www.python-office.com {content}
41.s1.encode(encoding='utf8', errors='strict'): b'https://www.python-office.com {content}'
42.s1.expandtabs(): https://www.python-office.com {content}
43.s1.format(content='yyds'): https://www.python-office.com yyds
44.s1.format_map( {'content': 'yyds'}): https://www.python-office.com yyds
import inspect import re id = 1 def printx(var): try: stack=inspect.stack() code = stack[1].code_context[0] fun = stack[0].function value_str = re.findall(fun + r'\((.+)\)', code) print(f'{id}.{value_str[0]}: {var}') id += 1 except: print(f'error: {var}') pass s1 = 'https://www.python-office.com {content}' print('输入字符串:' + s1) print(' 1、拼接 '.center(80, '-')) printx('-'.join(s1)) # 用来指定拼接符号,拼接出一个字符串,效率比+高 printx(s1.center(100, '*')) # 字符串居中,左右填充指定内容 printx(s1.ljust(50, '*')) # 返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。 printx(s1.rjust(50, '*')) # 它将原字符串右对齐,并使用空格填充至指定长度,并返回新的字符串。如果指定的长度小于原字符串长度,则直接返回原字符串。 printx(s1.zfill(50)) # 返回指定长度的字符串,原字符串右对齐,前面填充0。 print('\n' + ' 2、查找 '.center(80, '-')) printx(s1.count('p')) # 指定内容,在原str中出现了多少次 printx(s1.find('pip')) # 包含pip,则返回开始的索引值,否则返回-1。 print("str.index('pip') 由于 pip 不存在会报异常。") # 包含pip,则返回开始的索引值,否则返回Exception。 printx(s1.rfind(' ')) # 返回参数字符串在字符串中最后一次出现的位置。没有查询到则返回-1. printx(s1.rindex(' ')) # 返回参数字符串在字符串中最后一次出现的位置。没有查询到则返回Exception. print('\n' + ' 3、分割和替换 '.center(80, '-')) printx(s1.replace(' ', '-')) # 替换操作,str.replace()函数并不对原有的字符串进行改变。 printx(s1.partition(' ')) # 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。 printx(s1.rpartition(' ')) # 类似于 partition() 方法,只是该方法是从目标字符串的末尾也就是右边开始搜索分割符。 printx(s1.rsplit(' ')) # 如果给出了 maxsplit,则最多进行 maxsplit 次拆分,从 最右边 开始。 printx(s1.split(' ')) # 分割字符串 printx(s1.splitlines()) # 按照行界符('\r', '\r\n', \n'等)分隔,返回一个包含各行作为元素的列表,默认不包含行界符。 printx(s1.lstrip('p')) # 删除从开头开始指定的字符串,然后返回结果字符串。注意:只能从开头开始 printx(s1.rstrip('p')) # 删除 string 字符串末尾的指定字符,默认为空白符,包括空格、换行符、回车符、制表符。 printx(s1.strip()) # 删除前后的指定字符,默认是空格 print('\n' + ' 4、大小写操作 '.center(80, '-')) printx(s1.capitalize()) # 第一个字母大写,对中文无效 printx(s1.lower()) # 字母转为小写,只对英语有效 printx(s1.casefold()) # 字母转为小写,所有语言都有效,例如:德语 printx(s1.upper()) # 字母全部转为大写,英语有效 printx(s1.swapcase()) # 将字符串中的英文字母大小写互换,并返回修改后的字符串。 printx(s1.title()) # 将字符串中的每个单词首字母大写,其余字母小写,并返回新的字符串。 print('\n' + ' 5、判断内容 '.center(80, '-')) printx(s1.startswith('pip')) # 判断是否以pip为开头 printx(s1.endswith('office')) # 判断str是否以office结尾 printx(s1.isalnum()) # 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False printx(s1.isalpha()) # 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False printx(s1.isascii()) # 如果字符串为空或字符串中的所有字符都是 ASCII,则返回 True,否则返回 False。 printx(s1.isdecimal()) # 如果字符串中的所有字符都是十进制字符,则返回True printx(s1.isdigit()) # isdigit函数检测字符串中是否只包含数字字符。若全部是由数字字符组成的字符串,则返回True,否则返回False。isdigit函数没有参数。 printx(s1.isidentifier()) # 如果字符串是Python中的有效标识符,返回True。如果不是,则返回False。 printx(s1.islower()) # islower() 方法检测字符串是否由小写字母组成. printx(s1.isupper()) # 检测字符串中所有的字母是否都为大写。 printx(s1.isnumeric()) # 检查字符串中是否只包含数值字符。此方法只适用于Unicode的对象。 printx(s1.isprintable()) # 如果字符串中的所有字符都可打印或字符串为空,则返回 True,否则返回 False。 printx(s1.isspace()) # 检测字符串是否只由空白字符组成。 printx(s1.istitle()) # 检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。 print('\n' + ' 6、其他静态方法 '.center(80, '-')) printx(str.maketrans('12345', 'hello')) # 此静态方法返回一个 dict 对照表。 printx(s1.translate(str.maketrans('12345', 'hello'))) # 使用字典进行字符替换 printx(s1.encode(encoding='utf8', errors='strict')) # 返回字符串编码后的数据,默认的编码是当前的字符串编码。errors为给定的不同错误处理方法。 printx(s1.expandtabs()) # 用空格替换\t符号 printx(s1.format(content='yyds')) printx(s1.format_map( {'content': 'yyds'})) # 此方法仅适用于字符串格式中可变数据参数来源于字典等映射关系数据时。mapping 会被直接使用而不是复制到一个 dict。