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 # 返回错误。