"""__author__=胡兴航""" # 1. capitalize # str.capitalize() - 将字符串的第一个字母变为大写字母,其他字母变为小写字母 str1 = 'qwerrty' print(str1.capitalize()) # Qwerrty # 2. center # str.center(width, fillchar) - 返回一个指定宽度,居中为对象字符串,其余部分用指定字符填充的字符串,默认用空格填充 str1 = 'qaz' print(str1.center(10, '7')) # 777qaz7777 # 3. count # str.count(char) - 统计str中char的出现次数 str1 = 'qwertqwert' print(str1.count('q')) # str.count(char, start=, end=) - 统计str中指定范围内char的出现次数 print(str1.count('q', 0, 3)) # 1 # 4. endswith # str.endswith(suffix) - 确定字符串是否以指定的后缀结尾。 后缀可以是字符或字符串。 如果是,它将返回布尔值T,否则F str1 = 'qwerty' print(str1.endswith('y')) # True # str.endswith(suffix, start=, end=) - 确定指定范围内的字符串部分是否以指定后缀结尾。 print(str1.endswith('y', 2, 4)) # False # 5.find # str.find(str, start=, end=) - 确定指定范围内的字符串是否包含指定的子字符串,如果有,则返回所在处的首个字符的索引值;若不存在,则返回-1。 # 不加范围则默认搜索整个字符串 str1 = 'qwertyqwerty' print(str1.find('w')) # 1 print(str1.find('q', 2, 3)) # -1 # 6. index # str.index(str, start=, end=) - 功能与find相同,区别在于如果没有找到则会报错 str1 = 'qwertyqwerty' print(str1.index('w')) # 1 print(str1.index('q', 2, 3)) # ValueError: substring not found # 7. isdigit # str.isdigit() - 判断该字符串是否只由数字组成,是则返回True,不是则False str1 = '197414' str2 = '2d129a' print(str1.isdigit()) # True print(str2.isdigit()) # False # 8. islower # str.islower - 判断该字符串中的字母是否全由小写字母组成,是则返回True,不是则False str1, str2, str3 = 'qwe', 'QWe', 'qwe123' print(str1.islower()) # True print(str2.islower()) # False print(str3.islower()) # True # 9. isnumeric # str.isnumeric - 判断判断该字符串是否只由数字组成,是则返回True,不是则False。和isdigit区别在于罗马、汉字数字等同样符合要求 str1, str2, str3, str4 = '123', '一二三', '壹二三', '123hehe' print(str1.isnumeric()) # True print(str2.isnumeric()) # True print(str3.isnumeric()) # True print(str4.isnumeric()) # False # 10. istitle # str.istitle - 检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。 # 如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False. str1, str2, str3 = 'you shall not pass!', 'You Shall Not Pass!', 'You shall not pass!' print(str1.istitle()) # False print(str2.istitle()) # True print(str3.istitle()) # False # 11. isupper # str.isupper - 检测字符串中是否至少包含一个字母,而且所有字母是否都为大写字母。是则返回 True,否则返回 False. str1, str2, str3 = 'QWE123', 'Qwe123', '123' print(str1.isupper()) # True print(str2.isupper()) # False print(str3.isupper()) # False # 12. join # str.join(seq) - 将seq中的元素用str连接 # 注意,seq中的元素也需要是字符串,才能和str连接 str1, seq1, seq2, seq3 = 'z', {'q': '1', 'w': '2'}, ['1', '1', '1', '1', '1'], [3, 3, 3, 3] print(str1.join(seq1)) # 1z2z3 print(str1.join(seq2)) # 1z1z1z1z1 print(str1.join(seq3)) # TypeError: sequence item 0: expected str instance, int found # 13. len # len(seq) - 求字符串的长度、或者别的包含元素的容器的元素个数 seq1, seq2, seq3, seq4 = 'zxccv', [1, 2, 3], {3, 4, 5}, {1: "q", 2: "w"} print(len(seq1)) # 5 print(len(seq2)) # 3 print(len(seq3)) # 3 print(len(seq4)) # 2 # 14. ljust # str.ljust(width, fillchar) - 使str左对齐,并用fillchar填充str至指定长度,如果不指定fillchar则默认空格 str1 = 'zzz' print(str1.ljust(10, '1')) # zzz1111111 print(str1.ljust(10)) # zzz # 15. rjust # str.rjust(width, fillchar) - 使str右对齐,并用fillchar填充str至指定长度,如果不指定fillchar则默认空格 str1 = 'zzz' print(str1.rjust(10, '1')) # 1111111zzz print(str1.rjust(10)) # zzz # 16. lower # str.lower() - 将str中所有大写字符转为小写字符 str1 = 'qwerYUIP' print(str1.lower()) # qweryuip # 17. strip # str.strip(chars) - 删除str两端指定的chars,chars可以倒序匹配 str1 = '123adioqe321' print(str1.strip('123')) # adioqe # 若无法匹配到chars,则会返回原str print(str1.strip('z')) # 123adioqe321 # 还可以部分匹配 print(str1.strip('z1')) # 23adioqe32 # 18. lstrip # str.lstrip(chars) - 删除str左端指定的chars str1 = '123world321' print(str1.lstrip('123')) # world321 # 19. rstrip # str.rstrip(chars) - 删除str右端指定的chars str1 = '123world321' print(str1.rstrip('123')) # 123world # 20. maketrans # str.maketrans(intab, outtab) - 将str中需要替换的intab部分的字符串替换成相应的映射outtab,并且替换是每个字符按顺序一一对应的,in和out长度相同 str1,intab, outtb = '198uio', '198', 'qwe' transtab = str1.maketrans(intab, outtab) print(str1.translate(transtab)) # qweuio # 21. replace # str.replace(old_str, new_str, n) - 将str中的old_str替换成new_str,n代表最大转换次数,不加n代表全部转换 str1 = 'woooohoooo' print(str1.replace('o', 'i')) # wiiiihiiii print(str1.replace('o', 'i', 2)) # wiioohoooo # 22. rfind # str.rfind(str1, start=, end=) - str中指定范围内,从尾端开始搜寻,返回str1最后一次出现的位置,如果没有找到则返回-1。不写start和end则搜寻整个str str1, str2 = 'haha world!', 'ha' print(str1.rfind(str2, 0, 2)) # 0 print(str1.rfind(str2)) # 2 # 23. rindex # # # str.index(str, start=, end=) - 功能与index相同,区别在于从str尾端开始寻找, str1 = 'well you can leave!' print(str1.rindex('you')) # 5 # 由于是从右边开始搜寻的,you不在给定的下标范围呢,所以找不到 print(str1.rindex('you', 8, len(str1))) # ValueError: substring not found # 24. split # str.split(str1, n) - 以str1为断点将str分割为n+1段,n规定了分割n次,如果不写n则全部分割,并返回由分割剩余部分组成的列表 str1, str_split = 'qwe1rty1uio1pas', '1' print(str1.split(str_split)) # ['qwe', 'rty', 'uio', 'pas'] print(str1.split(str_split, 1)) # ['qwe', 'rty1uio1pas'] # 25, splitlines # str.splitlines(keepends) - 将str以换行符为切点切割,在输出结果里是否去掉换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。 print('ab c\n\nde fg\rkl\r\n'.splitlines()) # ['ab c', '', 'de fg', 'kl'] 默认为false,所以不保留换行符 print('ab c\n\nde fg\rkl\r\n') """ ab c kl """ print('ab c\n\nde fg\rkl\r\n'.splitlines(True)) # ['ab c\n', '\n', 'de fg\r', 'kl\r\n'] # 26. startswith # str.startswith(str1, start=, end=) - 确定str是否以str1作为开头,如果指定了范围则以范围内的str部分开始。正确返回true,错误则返回false str1, sta_str = 'yoha world!', 'yo' print(str1.startswith(sta_str)) # True print(str1.startswith(sta_str, 3, len(str1))) # False # 27. translate - 见20. maketrans方法 intab, outtab = 'aeiou', '12345' transtab = str.maketrans(intab, outtab) str1 = 'you shall love me' print(str1.translate(transtab)) # y45 sh1ll l4v2 m2 # 28. upper # str.upper() - 将str中的小写字母转换成大写字母 str1 = 'qwe123TYU嘿嘿嘿' print(str1.upper()) # QWE123TYU嘿嘿嘿 非字母部分不受影响 # 29. zfill # str.zfill(width) - 将str右对齐,并用0填充至wdth长度 str1 = 'qwe' print(str1.zfill(5)) # 00qwe print(str1.zfill(2)) # qwe 如果width<= str本身的长度,则输出原str # 30. casefold # str.casefold() - 消除大小写,也是转换成小写,与lower的不同之处在于lower只会转换英文字母,casefold还可以转换别的字母 str1 = 'HAHA WORLD ß!' print(str1.casefold()) # haha world ss! print(str1.lower()) # haha world ß! """ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! """ # 31. expandtabs # str.expandtabs(tablesize=n) - 将str中的每个制表符\t之前用空格代替,默认为8个空格 str1 = "this is\tstring example....wow!!!" print("Original string: ", str1) # Original string: this is string example....wow!!! # 32. format - 一种格式化函数,功能为传递参数 # 通过字典key值设置参数 dict1 = {'name': '胡兴航', 'revenue': '50,000$'} print('名字:{name}, 月收入:{revenue}'.format(**dict1)) # 名字:胡兴航, 月收入:50,000$ # 通过列表索引设置参数 list1 = ['胡兴航', '50,000$'] print('名字:{0[0]}, 月收入:{0[1]}'.format(list1)) # 0是必须写的 # 名字:胡兴航, 月收入:50,000$ # 若参数未组成容器 # str1 = "{}{}{}".format("hello", "world") # print('str1 = %s' % str1) # IndexError: Replacement index 2 out of range for positional args tuple - 替换索引值2超过了位置参数args组成的元组的范围(0,1) str2 = "{1} {1}".format("hello", "world") # 替换索引相同,则传递的参数相同 print('str2 = %s' % str2) # str2 = world world str3 = "{1} {1} {0}".format("hello", "world") # 替换索引不同,则传递的参数不同,且只要替换索引的范围不超过args元组的范围就可以多次传参 print('str3 = %s' % str3) # str3 = world world hello str4 = '{} {}'.format('hello', 'world', 'you') # 默认替换索引则与args元组的索引相同,但替换索引范围不可超过元组索引,否则会报错 print('str4 = %s' % str4) # str4 = hello world # 32. partition # str1.partition(str2) - 将str1以str2为切点进行分割,得到str2左边的字符串、str2、str2右边的字符串组成的三元元组 str1 = 'qw1qw1qw1' print(str1.partition('1')) # ('qw', '1', 'qw1qw1') # 从字符串左边开始匹配,就算有多个str2,也只会切割第一个 # 33. rpartition # str1.rpartition(str2) - 功能与partition类似,区别在于从str1左边开始匹配,其余相同 str1 = 'qw1qw1qw1qw' print(str1.rpartition('1')) # ('qw1qw1qw', '1', 'qw') # 34. removeprefix # str.removeprefix(sub_str) - 如果str以sub_str开头,则移除sub_str,并将剩余的部分生成一个新的字符串。若无法匹配,则返回原str str1 = 'hahaworld!' print(str1.removeprefix('haha')) # world! print(str1) # hahaworld! # 原字符串并未改变 print(str1.removeprefix('1haha')) # hahaworld! # 35. removesuffix # str.removesuff(sub_str) - 匹配str是否以sub_str结尾,其余与removeprefix相同 str1 = 'hahaworld' print(str1.removesuffix('ld')) # hahawor # 36. isprintable # str.isprintable() - 判断str中所有字符是否可以打印(不可打印的字符可以是回车和换行符),能则返回true,不能则返回false,空串判断为true str1 = '' \ '\n' print(str1.isprintable()) # False str2 = '' print(str2.isprintable()) # True # 37. isidentifier # str.isidentifier - 判断str是否是有效标识符(可以作为变量名字),是则返回true,否则返回false。标识符不能用数字开头、不能有空格 print('is'.isidentifier()) # True # 虽然不建议用is作为标识符,但是可以用 print('name'.isidentifier()) # True print('1two'.isidentifier()) # False # 由于标识符不能以数字开头,所以不合法 print('p p'.isidentifier()) # False # 含有空格,所以不合法 # 38. isascii # str.isascii() - 判断str的字符是否都在 U+0000-U+007F 范围内,是则返回true,否则返回false。空串返回true print('你'.isascii()) # False print('1y'.isascii()) # True print(''.isascii()) # True # 39. isalpha # str.isalpha - 判断str是否全部由字母组成。如果str至少有一个字符且所有字符都为字母则返回true,否则返回false。字母为广义字母,中文等语言都可以, str1, str2, str3, str4 = 'sherlock', 's胡さしнпрστυ', '123', 'sher lock' print(str1.isalpha()) # True print(str2.isalpha()) # True print(str3.isalpha()) # False print(str4.isalpha()) # False # 由于存在空格,所以返回false # 40. isalnum # str.isalnum() - 如果 str 至少有一个字符并且所有字符都是字母(广义)或数字则返回 True,否则返回 False str1, str2, str3 = '2weeks', '2个人', 'q_p 2]' print(str1.isalnum()) # True print(str2.isalnum()) # True print(str3.isalnum()) # False # 41. format_map # str.format_map(mapping) - 与str.format类似,区别在于参数mapping只为字典对象 infro = {'name': '胡兴航', 'revenue': '50,000$'} print('my name is {name}, my revenue is {revenue}.'.format_map(infro)) # my name is 胡兴航, my revenue is 50,000$.