string内建函数
1 # 内建函数 2 # 1、eval(str) : 把str转成可执行的代码 3 print(eval("123")) 4 str1 = eval("123") 5 print(type(str1)) # int 6 print(eval("1 + 2")) # 3 7 print(eval("-1234")) # -1234 8 print(eval("+567")) # 567 9 # print(eval("123abc")) # SyntaxError: unexpected EOF while parsing 10 11 # 2、len(str) 返回字符串的长度 **** 12 str2 = "123456789" 13 print(len(str2)) # 9 14 15 # 3、字母大小写转换 不会影响原始字符串,会返回一个新的字符串 *** 16 str3 = "hoW aRe You?I'm fAIn. ThAnk yOU." 17 print(str3) 18 # 3.1、lower() 将所有字母转成小写 19 str4 = str3.lower() 20 print(str4) 21 print(str3) 22 # 3.2、upper() 将所有字母转成大写 23 print(str3.upper()) 24 # 3.3、swapcase() 将大写转为小写,将小写转为大写 25 print(str3.swapcase()) 26 # 3.4、title() 每个单词的首字母大写 27 print(str3.title()) 28 # 3.5、capitalize() 每个段落的首字母大写 29 print(str3.capitalize()) 30 31 # 4、str.count(subStr [,begin, end]) 返回str中subStr出现的次数 32 # 如果指定begin与end的值,根据给定的范围获取次数 33 str4 = "ni hao bye ni bye ya o hei ni hao" 34 print(str4.count("ni")) # 3 35 print(str4.count("ni", 3, 32)) 36 37 # 5、检测一个字符串中有没有另一个字符串 38 # in not in 39 str5 = "abcdefghidejk" 40 # 5.1、str.find(subStr [,begin, end]) 检测str中有没有subStr, 41 # 如果有,返回第一次找到的下标;如果没有,返回-1 42 # 从左向右查 43 print(str5.find("de")) # 3 44 print(str5.find("qw")) # -1 45 print(str5.find("de", 4, 13)) # 9 46 # 5.2、str.rfind(subStr [,begin, end]) 检测str中有没有subStr, 47 # 如果有,返回第一次找到的下标;如果没有,返回-1 48 # 从右向左查 49 print(str5.rfind("de")) # 9 50 # 5.3、str.index(subStr [,begin, end]) 检测str中有没有subStr, 51 # 如果有,返回第一次找到的下标;如果没有,返回错误 ValueError: substring not found 52 # 从左向右查 53 print(str5.index("de")) # 3 54 # print(str5.index("qw")) # 返回错误 55 print(str5.index("de", 4, 13)) # 9 56 # 5.4、str.rindex(subStr [,begin, end]) 检测str中有没有subStr, 57 # 如果有,返回第一次找到的下标;如果没有,返回错误 ValueError: substring not found 58 # 从右向左查 59 print(str5.rindex("de")) # 9 60 61 62 # 6、返回一个指定长度的字符串 63 # 6.1、str.center(len [,fillChar]) 返回一个长度为len的字符串,str在 64 # 中间位置,其他位置用fillChar补齐,默认为空格 65 str6 = "pyc" 66 print(str6.center(12)) 67 print(str6.center(12, "*")) 68 # 6.2、str.ljust(len [,fillChar]) 返回一个长度为len的字符串,str在 69 # 左边,其他位置用fillChar补齐,默认为空格 70 print(str6.ljust(12)) 71 print(str6.ljust(12, "&")) 72 # 6.3、str.rjust(len [,fillChar]) 返回一个长度为len的字符串,str在 73 # 右边,其他位置用fillChar补齐,默认为空格 74 print(str6.rjust(12)) 75 print(str6.rjust(12, "#")) 76 # 6.4、str.zfill(len) 返回一个长度为len的字符串,str在 77 # 右边,其他位置用数字0补齐 78 print(str6.zfill(12)) 79 80 # 7、截掉指定字符 81 str7 = " str " 82 str8 = "******wyc******" 83 # 7.1、str.strip(subStr) 将str左右两边的subStr截掉,如果不给 84 # 定subStr,默认为空格 85 print(str7.strip()) 86 print(str8.strip("*")) 87 # 7.2、str.lstrip(subStr) 将str左边的subStr截掉,如果不给 88 # 定subStr,默认为空格 89 print(str7.lstrip()) 90 print(str8.lstrip("*")) 91 # 7.3、str.rstrip(subStr) 将str右边的subStr截掉,如果不给 92 # 定subStr,默认为空格 93 print(str7.rstrip()) 94 print(str8.rstrip("*")) 95 96 97 # 8、切割字符串,返回一个列表类型的数据 98 # 8.1、str.split(subStr [,num]) 以subStr切割str字符串,如果num无值,默认 99 # 全切,如果num有值,切割次数的最大值为num次 100 # 返回一个列表,将切割好的字符串放到列表中 101 str9 = "pyc*is*a*good*girl" 102 print(str9.split("*")) 103 print(str9.split("*", 2)) 104 # 8.2、str.splitlines([bool]) 以行(\n \r \n\r)切割str字符串, 105 # 返回一个列表,将切割好的字符串放到列表中 106 # 当bool为False时,不保留换行符,默认值;当bool为True时,保留换行符 107 print('---------------------') 108 str11 = "abc\ndef\noop\nduoheshui\nhe" 109 print(str11.splitlines()) 110 print(str11.splitlines(False)) 111 print(str11.splitlines(True)) 112 str12 = """abc 113 def 114 ghi 115 jk""" 116 print(str12) 117 print(str12.splitlines()) 118 119 120 121 122 # 9、拼接字符串 123 # str.join(iter) : 将iter中的元素使用str拼接为一个字符串 124 list1 = ["123", "abc", "def", "456"] 125 print("*".join(list1)) 126 127 # 10、字符与ASCII之间的转换 128 # 10.1、ord() 将某个字符转为ASCII 129 str10 = "A" 130 print(ord(str10)) # 65 131 # 10.2、chr() 将ASCII转为字符 132 print(chr(66)) 133 134 print(ord("潘")) # 28504 135 print(chr(23102)) # 娾 136 137 # 11、返回字符串中的最大值或最小值,比较ASCII的值 138 str13 = "qAfSCkZzw" 139 print(max(str13)) # z 140 print(min(str13)) # A 141 142 # 12、替换字符串, 返回一个新的字符串 143 str14 = "ni hao good well ni hao bye ni hao ni" 144 # 12.1、str.replace(oldStr, newStr [, num]) 将str中的oldStr旧字符串 145 # 替换为newStr新字符串 146 # 如果num无值,默认全部替换;如果num有值,最多替换num次 147 print(str14) 148 print(str14.replace("hao", "buhao")) 149 print(str14.replace("hao", "huai" , 2)) 150 151 # 12.2、str.maketrans() 创建一个映射表,并将该映射表返回 152 # 当maketrans有两个字符串类型的参数时,要求这两个字符串的长度一致, 153 # 如果长度不一致,会报错 154 # 当maketrans只写一个字参数时,要求这参数为字典类型的数据 155 t1 = str.maketrans("abcd", "1234") 156 # ValueError: the first two maketrans arguments must have equal length 157 print(t1) 158 t2 = str.maketrans({"q": "9", "w": "8"}) 159 print(t2) 160 # str.translate(t) 根据t(上面的方式创建的映射表)替换str中对应的字符 161 str15 = "abcdefgqwwqabc" 162 print(str15.translate(t1)) 163 print(str15.translate(t2)) 164 165 # 13、用于判断的函数 166 # isalpha() 字符串中至少有一个字符,并且所有字符都是字母, 167 # 返回True,否则返回False 168 print("".isalpha()) # F 169 print("1234".isalpha()) # F 170 print("abc".isalpha()) # T 171 # isupper() 字符串中至少有一个是区分大小写的字符, 172 # 并且所有字符都是大写,返回True,否则返回False 173 print(" ".isupper()) # F 174 print("abcD".isupper()) # F 175 print('ABC123'.isupper()) # T 176 # islower() 字符串中至少有一个是区分大小写的字符, 177 # 并且所有字符都是小写,返回True,否则返回False 178 print(" ".islower()) # F 179 print("abcD".islower()) # F 180 print('abc123'.islower()) # T 181 # istitle() 字符串中至少有一个是区分大小写的字符,并且所有字符都是 182 # 标题化,返回True,否则返回False 183 print('abc123'.istitle()) # F 184 print('Ade Q123 Io'.istitle()) # T 185 186 # isalnum() 字符串中至少有一个字符,并且所有字符都是字母或数字, 187 # 返回True,否则返回False 188 print(' 12345 '.isalnum()) # F 189 print('12asdf'.isalnum()) # T 190 191 # isdigit() 字符串中至少有一个字符,并且所有字符都是数字, 192 # 返回True,否则返回False 193 print(' 12345 '.isdigit()) # F 194 print('12asdf'.isdigit()) # F 195 print('12123456'.isdigit()) # T 196 197 # isspace() 字符串中至少有一个字符,并且所有字符都是空格, 198 # 返回True,否则返回False 199 print(' '.isspace()) # T 200 print(' 1234 '.isspace()) # F 201 # 判断 正则 202 203 # 14、string.startswith(str [, begin, end]) 204 # 判断string是否以str开头,是返回True,否则返回False , 205 # begin, end指定范围查找 206 str20 = "http://www.baidu.com" 207 print(str20.startswith("http://")) 208 print(str20.startswith("www")) 209 print(str20.startswith("www", 7, 15)) 210 211 # string.endswith(str [, begin, end]) 212 # 判断string是否以str开头,是返回True,否则返回False , 213 # begin, end指定范围查找 214 print(str20.endswith(".com")) 215 print(str20.endswith("www")) 216 print(str20.endswith("www", 0, 10)) 217 218 # 15、编码解码 219 # string.encode(encoding) 以encoding指定的格式进行编码 220 str23 = "我是pycPYC!@#¥123" 221 print(str23) 222 str24 = str23.encode("GBK") 223 print(str24) 224 print(type(str24)) # bytes 225 print(str23.encode("utf-8")) 226 227 # string.decode(encoding) 以encoding指定的格式进行解码 228 print(str24.decode("GBK")) 229 230 # 注:解码时要求知道字节是以什么方式进行编码的,编码解码格式不一致时, 231 # 返回错误。