03字符串

  1 """
  2 字符串的三种表示形式:
  3 1.单引号
  4 2.双引号
  5 3.三引号(三双,三单)
  6 """
  7 # string_01 = "How are you?"
  8 # print(string_01)
  9 # string_02 = "it's very good"
 10 # # 字符串内容中有单引号,字符串就不能使用单引号包裹。
 11 # print(string_02)
 12 # string_03 = '''it' very good'''  # 字符串内容中有单引号,可以使用三引号包裹
 13 # print(string_03)
 14 # string_04 = """it' very good"""  # 三双引号可以包裹单引号
 15 # print(string_04)
 16 # string_05 = 'he said:"he is happy'  # 字符串内容中有双引号,字符串就使用其他符号内容包裹
 17 # print(string_05)
 18 # string_06 = '''he said:"he is happy''' # 三引号可以包裹双引号
 19 # print(string_06)
 20 # string_07 = """he said:"he is happy""" # 三双引号可以包裹双引号。单引号
 21 
 22 """
 23 转义字符,\...
 24 常用的转义字符:
 25 \b  back,退一格
 26 \t tab 横向制表符,向右空四格
 27 \r 回车不换行
 28 \f 表示的是换页
 29 """
 30 # string_01 = 'let\'s go'  # 代表当前只是普通的单引号,不是字符串开始结束标记
 31 # print(string_01)
 32 # string_02 = "a\\c"  # \\... 代表一个普通的\而不是转义字符的开始标记
 33 # print(string_02)
 34 # a = 10 + 50 + 40 +\
 35 #     (100 - 30 * 20)  # \在行尾代表换行
 36 # print(a)
 37 # string_03 = "hello every,\n glad to meet you"
 38 # print(string_03)
 39 # print("abcd\refg")  # \r回车不换行,回车当前行的行首
 40 # print("abcd\befg")  # \b退格
 41 # print("abcd\tefg")  # \t横向制表符,空四个格,相当于按一次tab键
 42 
 43 """
 44 不想转义时,可以使用r\R加在字符串的前面,表示原始字符
 45 print("abc\ndef")   # \n换行
 46 print(r"abc\ndef")  # r,原始字符,\n变为普通字符,不在表示换行
 47 print(R"abc\ndef")  # R,原始字符,\t变为普通字符,不在表示制表符
 48 字符串的输入输出,input(),print()
 49 字符串的格式化输出:%。。  (占位)
 50 1%d   表示十进制整数
 51 2%f   表示十进制浮点数
 52 3%s  表示字符串
 53 2%i   表示有符号十进制整数
 54 格式化字符串的另一种方法:"{}".format(a,b)
 55 {0},{1}   含义:参数的位置,默认的顺序是从0开始依次递增
 56 {0:#>6}  含义:0,参数为止,#填充符号,>向右对齐,六个字符位置
 57 对齐方式:<左对齐,^居中,>右对齐
 58 :冒号后面如果跟字符,只能跟一个,如果没有字符默认以空格填充。
 59 """
 60 name = "小明"
 61 age = 18
 62 print("我的名字叫%s,今年%d岁" % (name, age))
 63 print("我的名字叫{},今年{}岁".format(name, age))
 64 print("我的名字叫{0:>6},今年{1:<3}岁".format(name, age))
 65 
 66 # print("Hello everyone,\nglad to mite you")
 67 # print(r"Hello everyone,\nglad to mite you")
 68 # print(R"Hello everyone,\nglad to mite you")
 69 # name = "小明"
 70 # age = 20
 71 # # 占位符,后面跟多个变量用括号括起来,逗号隔开,元祖
 72 # print("我叫%s,今年%d岁" % (name, age))
 73 # a = 4.3
 74 # print("a的值为%2.3d" % a)  # %2.3,2代表整数占的位数,3代表小数占的位数
 75 
 76 # 九九乘法表
 77 # for i in range(1,10):  # 生成一个数字序列
 78 #     for j in range(1, i+1):
 79 
 80 """
 81 %5d  中的5的作用:占位,整数占五个字符的位置,如果是数字的长度
 82 # 小于5,扩展至五位,前边空着,右对齐,如果数字的长度大于5,
 83 # 保留数字本身的长度。
 84 """
 85 #         print("%d * %d = %2d" % (i, j, i*j), end="")
 86 #     print("")
 87 # range(start,end,step)生成一个数字序列,整数。
 88 # start 开始,生成的数字序列包含开始,默认是0
 89 # end 结束,生成的数字序列不包含结束,在结束之前的一个数字
 90 # step 步长,从开始到结尾,每个数字之间的差,默认是1,。取值为整数,可以为正负
 91 # range(10)  生成的数字序列为:0.1.2.3.4.5.6.7.8.9.
 92 # range(1,10,2)  生成的序列为:1.3.5.7.9
 93 # range(10,1,-1)  生成的数字序列为:10.9.8.7.6.5.4.3.2.
 94 # print(range(10, 1, -1))
 95 # for i in range(10, 1, -1):  # 生成空的数字序列
 96 #     print(i, end="")
 97 
 98 """
 99 格式化字符串是另一种方式,“{}”.formal()
100 {0}{1}{2}......,花括号中可以写整数没代表format中参数的位置,从0开始
101 接上行,可以不写,默认的顺序就是0,1,2,3...
102 {0:!>8}  含义:0代表参数的位置,!代表填充的字符,>右对齐,8代表8个字符的位置
103 默认左对齐,默认以空格填充多余的位置
104 """
105 # print("我叫%s,今年%d岁" % ("张三", 20))
106 # print("我叫{0:!<6},今年{1:*^4}岁, 家住{2:@>8}".format("张三", 20, "山西"))
107 # name = "小明"
108 # score = 100
109 # print("%s的考试成绩为%d" % (name, score))
110 # print("{}的考试成绩为{}".format(name, score))
111 # format写九九乘法表
112 # for i in range(1, 10):
113 #     for j in range(1, i+1):
114 #         # print("{0:2}*{1:2}={2:3}".format(i, j, i*j), end="")
115 #         print("{0:☂>3}*{1:☺>3}={2:☂>5}\t".format(i, j, i*j), end="")
116 #     print("")
117 
118 """
119 字符串中的值,用的是索引或下标
120 字符串的索引从左至右,从0开始,一次+1 , 到  长度-1
121 索引从右至左,从-1开始,依次-1(减一)  到  -(负)字符串长度
122 """
123 # string_01 = "python"
124 # print(string_01[0])  # p
125 # print(string_01[-6])  # p
126 # print(string_01[5])  # n
127 # print(string_01[-1])  # n
128 # print(string_01[4])  # o
129 # print(string_01[-2])  # 0
130 # print(string_01[6])  # IndexError: string index out of range
131 
132 """
133 字符串是不可变的!如果想要修改字符串的值,会报错
134 字符串的拼接,会生成一个新的字符串,+
135 """
136 # string_01 = "python"
137 # print(id(string_01))  # 查看变量地址
138 # print(string_01)
139 # string_01 += "hello"
140 # print(id(string_01))  # 查看变量地址
141 # print(string_01)
142 
143 """
144 切片,对字符串进行截取一段
145 字符串变量名[start:end:step]  start开始(包含),  end结束(不包含),step步长(默认为1 )
146 切片,左闭右开
147 方向:从左至右,从右至左
148 步长:下标加的数字,比如0开始,步长为2:0,+2-->2, +2-->4,  +2-->6
149 """
150 # string_02 = "hel love one"
151 # # 开始,结束,步长,都省略,表示整个字符串,默认从0开始到最后结束,步长为1
152 # print(string_02[::])
153 # print(string_02[::-1])  # 步长为-1,字符串逆序输出
154 # string_03 = "good good study,day day up"
155 # a = string_03[0:4:1]  # 第一个good
156 # print(a)
157 # b = string_03[5:9:1]   # 第二个good
158 # print(b)
159 # # 切出  study,
160 # c = string_03[10:16:1]
161 # print(c)
162 # # .pu
163 # d = string_03[-1:-4:-1]
164 # print(d)
165 # # 从开始到结尾,步长为2
166 # e = string_03[0:28:2]
167 # print(e)
168 # # 从开始到结尾,步长为3
169 # f = string_03[2:28:1]
170 
171 """
172 字符串常用的函数:
173 1.len(str)  求字符串的长度
174 2.max(str)  求字符串中ASCII最大的那个字符
175 2.min(str)  求字符串中ASCII最小的那个字符
176 enumerate(str,start=)  生成一个下标,数值对应的对象(序列);
177 通常与for循环使用字符串的遍历:for,while
178 """
179 # word = "123abcABC"
180 # print(len(word))  # 9
181 # print(max(word))  # 'c'
182 # print(min(word))  # '1'
183 # for i in word:  # for循环遍历字符串
184 #     print(i)
185 # for i, j in enumerate(word):  # enumerate()中的start默认为0
186 #     print(i, j)
187 # temp = 0
188 # while temp < len(word):  # while循环遍历字符串
189 #     print(word[temp])
190 #     temp += 1
191 
192 """
193 函数作用于的变量使用函数时写在函数后面的括号中,方法要跟在变量.后边
194 字符串的:
195 内建方法,常用的有:
196 1。find()  格式:str.find(子串,开始(默认为0),结束(默认为最后))
197 查找子串,找到了就返回第一个匹配的对象的下标值,没有就返回-1
198 2.rfind()  查找子串,从右边开始查找
199 """
200 # word = "Hello,welcome to china"
201 # print(word.find("china"))  # 17
202 # print(word.find("ccc"))  # -1,没找到
203 # print(word.find("o"))   # 4,从最开始第一个o
204 # print(word.rfind("o"))   # 15,从右开始第一个o
205 # print(word.rfind("o", 5, 15))   # 10,切片范围内的第一个o
206 
207 # word = "abc123dABCefg"
208 # # 求字符串的长度
209 # print(len(word))  # 13
210 # # 求字符串中的最大值
211 # print(max(word))  # g
212 # # 求字符串中的最小值
213 # print(min(word))  # 1
214 # # 使用for、while循环来遍历字符串
215 # for i in word:
216 #     print(i)
217 # temp = 0
218 # while temp < len(word):
219 #     print(word[temp])
220 #     temp += 1
221 # # enumerate 生成下标数据对应的序列,与for循环结合
222 # for i, j in enumerate(word):
223 #     print("i, j")
224 # # 查找"e"所在的下标位置。
225 # print(word.find("e"))  # 10
226 
227 """
228 while  条件表达式1:  当条件为1成立,为True时,循环,代码块1才会执行
229     代码块1
230 """
231 # while True:    # 死循环
232 #     print("abc")
233 # word = "abc123"
234 # while循环遍历字符串word,从哪一个字符开始至最后一个字符终止,全部访问到
235 # 字符串怎么访问到每一个字符,使用下标(索引)
236 # word[0],word[1],...word[n-1]
237 # i = 0  # 变量双重作用,1:while循环条件2:字符串下标
238 # while i < len(word)
239 #     print(word[i])  # 使用下标访问字符串
240 #     i += 1
241 # print("程序结束运行")
242 # # for循环遍历
243 # for i in word:  # i取值范围就是字符串中的每一个字符
244 #     print(i)
245 # 字符串,"word hello"。使用while循环遍历字符串,找到字母e,如果字母为e时就停止遍历,结束循环
246 # string_01 = "word hello"
247 # i = 0
248 # while i < len(string_01):
249 #     print(string_01[i])
250 #     if string_01[i] == "e":
251 #         break   # 跳出并结束循环
252 #     i += 1
253 # list_01 = [1, 2, 3,"abc", "hello"]  # 列表
254 # # for 循环遍历列表
255 # for i in list_01:
256 #     print(i)
257 # # while 循环遍历列表
258 # temp = 0
259 # while temp < len(list_01):
260 #     print(list_01[temp])
261 #     temp += 1
262 
263 """
264 字符串的内建方法:
265 1.find()  查找子串,如果找到了就返回第一个匹配的下标值,没有找到返回-1
266 2.rfind()  查找子串,从右边开始查找
267 3.index()  查找子串,如果找到了就返回第一个匹配的下标值,(用法同find)没有找到报错
268 """
269 # my_str = "hello,hello,hello."
270 # print(my_str.index("hello"))  # 0
271 # print(my_str.index("hll"))
272 #  ValueError: substring not found  抛出异常  值异常,
273 # print(my_st.find("hll"))
274 #  NameError: name 'my_st' is not defined  名称错误
275 # for i in range(10)
276 #  SyntaxError: invalid syntax 无效的语法 语法错误
277 #     print(i)
278 # print(my_str[30])
279 # IndexError: string index out of range 索引异常,字符串索引超出了范围
280 
281 """
282 ValueError: substring not found  抛出异常  值异常,字符串没有找到  
283 NameError: name 'my_st' is not defined  名称错误 名称为my_st的变量没有被定义
284 SyntaxError: invalid syntax 无效的语法 语法错误 
285 IndexError: string index out of rang  索引异常:字符串索引超出了范围
286 """
287 """
288 1.字符串可以存那些数据?数字,字母,下划线"abc123%^*"
289 2.字符串创建的形式,三种,分别是:'',"",'''''',""""""
290 3.转义字符,\,\b,\t,\n
291 4.特殊字符,r/R
292 5.字符串的输入输出:input(),print()
293 6.格式化字符串的两种方法:%(%s,%d5,%f),{0/1}.format(a,b)
294 """
295 # 复习
296 # 有一个字符串"today is sunny"索引下标(从左往右0-10,从右往左-1--10)
297 # string_1 = "today is sunny"
298 # print(string_1[2])  # d
299 # print(string_1[0:6])  # today
300 # print(string_1[0:6:2])  # tdy
301 # # 遍历字符串 for,while
302 # for i in string_1:
303 #     print(i)
304 # print("while循环")
305 # temp = 0
306 # while temp < len(string_1):
307 #     print(string_1[temp])
308 #     temp += 1
309 # # 输出字符串的下标和值得对应序列
310 # for i, j in enumerate(string_1):
311 #     print(i,j)
312 # 使用格式化输出的两种方式,实现"我叫小明,今年18岁”输出
313 # name = "小明"
314 # age = 18
315 # print("我叫%s,今年%d岁" % (name, age))
316 # print("我叫{0:&<6},今年{1:&<3}岁".format(name, age))
317 
318 """
319 字符串内建方法,str.count(subs, start=0, end=len(str)
320 参数说明: subs代表查找的字母
321           star开始查找位置,默认为0
322           end查找结束的位置,默认为len(str)
323 """
324 # my_str = "hello,hello,hello,how are you?"
325 # temp = my_str.count("hello", 0, len(my_str))
326 # print(temp)  # 3
327 # temp = my_str.count("hello", 6, len(my_str))
328 # print(temp)  # 2
329 # temp = my_str.count("hhh")
330 # print(temp)  # 0
331 # # 问my_str 字符串中字母o出现的次数
332 # temp = my_str.count("o")  # 5
333 # print(temp)
334 
335 """
336 字符串的内建方法,str.replace(old,new,[max])
337 将原字符串中的旧字符替换为新的字符
338 max为可选项,当指明max的值时,最多可替换max次
339 """
340 # my_str = "ha ha ha , happy"
341 # my_str1 = my_str.replace("ha", "hi")  # hi hi hi,hippy
342 # print(my_str1)
343 # my_str1 = my_str.replace("ha", "haa")  # haa haa haa,haappy
344 # print(my_str1)
345 # temp = my_str[3:11]  # ha ha ,
346 # print(temp)
347 # temp = temp.replace("ha", "hi")  # hi hi ,
348 # print(temp)
349 # temp_01 = my_str[0:3] + temp + my_str[11:]  # ha hi hi,happy
350 # print(temp_01)
351 
352 """
353 字符串内建方法,str.split([str = ""],[count])
354 以指定的字符对原字符串进行分隔,切片,生成一个新的列表包含,
355 切完后的每一个子字符串就是列表的一个元素
356 两个参数,分别为:指定分割的字符,默认为空格,换行\n,制表符\t
357                  指定的分割个数
358 """
359 # word = "1 2 3 4 5"
360 # word_1 = word.split()  # 默认以空格来分割,全部分开  ['1', '2', '3', '4', '5']
361 # print(word_1)
362 # word = "a,b,c,d,e"
363 # word_2 = word.split(",", 3)  # 指定以,来分割,分三次  ['a', 'b', 'c', 'd,e']
364 # print(word_2)
365 
366 # 5.编程实现,字符串“abc123ABC”,求字符串的长度,ASCII码最大值、最小值,并写出结果。(15分)
367 # word_01 = "abc123ABC"
368 # print(len(word_01))  # 9
369 # print(max(word_01))  # 16
370 # print(min(word_01))   # 1
371 # # 6.编程实现,字符串“hi,what’s your name”,查找字符”a”的索引下标位置(任一方法即可),字符”A”的索引下标位置(find,index都要用),并写出结果,(index报错的信息可以写中文)(20分)
372 # word_02 = "hi,what’s your name"
373 # print(word_02.find("a"))  # 5
374 # print(word_02.rfind("a"))  # 16
375 # print(word_02.index("a"))  # 5
376 # print(word_02.find("A"))  # -1
377 # print(word_02.index("A"))   # ValueError: substring not found
378 # # 7.编程实现,统计”abcabcaabbcc“字符串中字符”a”出现的次数,并对其进行全部替换,替换为”A”.(20分)
379 # word_03 = "abcabcaabbcc"
380 # print(word_03.count("a"))    # 4
381 # word_04 = word_03.replace("a", "A")
382 # print(word_04)    # AbcAbcAAbbcc
383 # # 8.编程实现,字符串”a b c d e f g“,对其使用空格进行切片,生成新的列表。(15分)
384 # word_05 = "a b c d e f g"
385 # list_01 = word_05.split()
386 # print(list_01)  # ['a', 'b', 'c', 'd', 'e', 'f', 'g']
387 
388 """
389 ctrl+x  删除整行
390 1.capitalize  将字符串的首字母大写,其余小写
391 2.title 将字符串中的所有单词首字母大写,其余小写
392 3.upper 将字符串中的所有单词大写
393 4.lower 将字符串中的所有单词小写
394 """
395 # word = "goodbye, see you tomorrow"
396 # print(word.capitalize())
397 # print(word.title())
398 # print(word.upper())
399 # print(word.lower())
400 # 运行结果
401 # Goodbye, see you tomorrow
402 # Goodbye, See You Tomorrow
403 # GOODBYE, SEE YOU TOMORROW
404 # goodbye, see you tomorrow
405 
406 """
407 字符串的内建方法,检查字符是否以指定的子串开头或结尾
408 1.startswith  开头
409 2.endswith    结尾
410 """
411 # word = "abcdefghigklmn"
412 # print(word.startswith("a"))
413 # print(word.startswith("a", 5, 10))
414 # print(word.startswith("f", 5, 10))
415 # print(word.endswith("n"))
416 # print(word.endswith("n", 5, 10))
417 # print(word.endswith("g", 5, 10))  # 左闭右开,包含起始字符不包含结尾字符
418 # print(word[5:10])  # 切片
419 # # 运行结果:
420 # TTrue
421 # False
422 # True
423 # True
424 # False
425 # True
426 # fghig
427 
428 """
429 字符串的内建方法,调整字符串至指定的长度,指明对齐方式以及填充的字符(默认空格)
430 1.ljust  调整至指定宽度,原字符靠左
431 2.rjust  调整至指定宽度,原字符靠右
432 3.center 调整至指定宽度,原字符居中
433 """
434 # word = "1907c"
435 # print(word.ljust(20))
436 # print(word.rjust(20))
437 # print(word.center(20))
438 # print(word.ljust(20, "*"))
439 # print(word.rjust(20, "$"))
440 # print(word.center(20, "@"))
441 # 运行结果:
442 # 1907c
443 #                1907c
444 #        1907c
445 # 1907c***************
446 # $$$$$$$$$$$$$$$1907c
447 # @@@@@@@1907c@@@@@@@@
448 
449 """
450 字符串的内建方法,截掉字符串左边或者右边或者左右两边的空格或指定字符
451 1.lstrip 截掉字符串左边的空格或指定字符
452 2.rstrip 截掉字符串右边的空格或指定字符
453 3.strip  截掉字符串左右两边的空格或指定字符
454 """
455 # word = "  python    "
456 # print(word.lstrip())
457 # print(word.rstrip())
458 # print(word.strip())
459 # word_01 = "**python*******"
460 # print(word_01.lstrip("*"))
461 # print(word_01.rstrip("*"))
462 # print(word_01.strip("*"))
463 # 运行结果:
464 # python
465 #   python
466 # python
467 # python*******
468 # **python
469 # python
470 
471 # # 去掉字符串左右的空格
472 # word = "  abc  "
473 # print(word.strip())
474 # # 拆分开并且保存
475 # word_1 = "a,b,c,d"
476 # print(word_1.split())
477 # list_01 = list(word)  # 将一个字符串转为列表
478 # # 把左右两边空格去掉
479 # word_2 = "hello  "
480 # word_3 = "  python"
481 # word_2 = word_2.rstrip()
482 # word_3 = word_3.lstrip()
483 # print(word_2.rstrip(",").center(10, "#"))
484 # print(word_3.lstrip(",").center(10, "#"))
485 # print(word_2.rstrip(",").ljust(10, "#"))
486 # print(word_3.lstrip(",").ljust(10, "#"))
487 # print(word_2.rstrip(",").ljust(10, "#"))
488 # print(word_3.lstrip(",").ljust(10, "#"))
489 
490 # word_4 = "my name is xiaoming, my age is 18."
491 # # 整个字符串首字母大写,其余小写
492 # print(word_4.capitalize())
493 # # 字符串中的每个单词首字母改为大写,其余大写
494 # print(word_4.title())
495 # # 字符串中所有单词改为大写
496 # print(word_4.upper())
497 # # 字符串中所有单词改为小写
498 # print(word_4.lower())
499 """
500 2.假设,以下内容是从网络上抓取的:
501 word = “\t\n登鹳雀楼\t王之涣\n白日依山尽\t\n黄河入海流\t\t更上一层楼”
502 要求:
503 将字符串中的空白字符全部去除,再使用空格作为分隔符,拼接成一个整齐的字符串。
504 以诗词原有的方式,居中显示
505 在使用空格作为分隔符,拼接成一个整齐的字符串
506 """
507 # word = "\t\nThe stork towers\tWang Zhihuan\nThe Sun along the mountain bows\t\n" \
508 #        "The Yellow River seawards flows\t\tscale new heights"
509 # word_01 = word.split()  # 先拆分
510 # print(word_01)
511 # for temp in word_01:  # 遍历列表
512 #     print("|", temp.center(11, " "), "|")
513 # word_02 = " ".join(word_01)  # 使用join方法
514 # print(word_02)
515 
516 """
517 假设,以下内容是从网络上抓取的:
518 word = "\t\nHigh\txiaoming\nlovepython\t\n" \
519        "aaaaaaa\t\tbbccccdddd"
520 要求:
521 将字符串中的空白字符全部去除,
522 以诗词原有的方式,居中显示,
523 再使用空格作为分隔符,拼接成一个整齐的字符串。
524 """
525 # word = "\t\nHigh\txiaoming\nlovepython\t\n" \
526 #        "aaaaaaa\t\tbbccccdddd"
527 # word_01 = word.split()  # 先拆分
528 # print(word_01)
529 # for temp in word_01:  # 遍历列表
530 #     print("|", temp.center(11, " "), "|")
531 # word_02 = " ".join(word_01)  # 使用join方法
532 # print(word_02)
533 
534 # 编写一个程序,用于统计字符串“ab2b3n5n2n67mm4n2”中字符n出现的次数。
535 
536 # my_str = "ab2b3n5n2n67mm4n2"
537 # temp = my_str.count("n")
538 # print(temp)  # 4
539 # count_1 = 0
540 # for i in my_str:
541 #     if i == "n":
542 #         count_1 += 1
543 #     print(count_1)
544 
545 # 为什么i可以直接用,而count_1要先定义再使用
546 # Python中的变量是不可提前定义,什么时候用就能直接拿来用
547 # 但是如果这个变量要跟其他的数据进行运算,首先这个变量要有值,就要先定义
548 
549 # 输出0-10之间的整数,用while
550 # i = 0
551 # while i < 11:
552 #     print(i)
553 #     i += 1
554 # for i in range(11):
555 #     print(i)

 

posted @ 2020-03-23 15:57  吹散思绪  阅读(265)  评论(0编辑  收藏  举报