![76ae72df01a4c22cdfeb6a86d6ca2bdd.png](https://i-blog.csdnimg.cn/blog_migrate/31cd0091961663dc567b4a0fbf53fc5c.jpeg)
字符串是由0个或多个字符组成的有序字符序列。
今天的学习的内容如下:
![12544884ed3346b13e9850ed8d35f4b0.png](https://i-blog.csdnimg.cn/blog_migrate/7c1c396038ed52c53f074cad43d84339.jpeg)
第一:字符串类型的表示,字符串是字符的序列表示,可以由一对单引号'x'或双引号"x"或三引号'''x'''构成,使用总结如下表:
![4812f35052ca392b9c6d54d7d46b827f.png](https://i-blog.csdnimg.cn/blog_migrate/04ee4436f0a1f08cb351460822532d09.jpeg)
我们输入一段代码来展示:
print('1单行,两边可以是单或双引号')
print("2单行,两边可以是单或双引号")
print('3单行,中间有"单或双"引号')
print("4单行,中间有'单或双'引号")
print('''5单行,中间有'单引号',"双引"号''')
print('''6多行输入,
字符串用三"引号"表示''')
'''7字符串没有被使用,
三引号还可以当做多行注释使用'''
输出结果如下:
![d9349c2c0eed7225b83de3d6c25e137d.png](https://i-blog.csdnimg.cn/blog_migrate/5c6e866ec5dcf80ecd627f49ede602e3.png)
最后一句为什么没有被输出呢?
是因为最后一句的字符串没有被定义,当做注释使用。以上是官方给的规定,我们再试试单引号或双引号可不可以换行呢:
输入代码测试:
print('1多行输入
可以是单或双引号')
print("2多行输入
试试可不可以")
![41f1a084f0f21b6f302c77f3ae36054d.png](https://i-blog.csdnimg.cn/blog_migrate/c3e3fa224b5a62a730c093ccf71f8447.png)
输出结果是错误,看来不行,换种方式再试一次,代码如下:
print('1多行输入'
'可以是单或双引号')
print("2多行输入"
"试试可不可以")
输出结果如下:
![e15a8efb93783982b3989c7c67531ecf.png](https://i-blog.csdnimg.cn/blog_migrate/512bb4272ddb8710fadd8f6e65294ad0.png)
代码输出结果可以看出,使用单双引号可以实现分行写,一行前后必须有单或双引号,输出结果仍然是单行显示。
字符串类型还具有索引功能,索引字符串的序列表示,它还包括两种序号体系,正向递增序号和方向递减序号。
![1c52d2d2da52f6408b4b4ebdfe87c478.png](https://i-blog.csdnimg.cn/blog_migrate/f5764a792fd5ec25d906579439cb8054.png)
我们之间已经学过这方面的知识,现在概述一下:
字符串采用[M:N]格式,表示字符串中从N到M(不包括M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号,如果表示中M或N索引缺失,则表示字符串把开始或结束索引值设为默认值。通常索引与切片混合使用。
索引:返回字符串种单个字符,<字符串>[M]
切片:返回字符串中一段字符子串,<字符串>[M:N]
索引和切片的高段位玩法如下:
<字符串>[M:N] #M到N-1的索引,M缺失表示至开头,N缺失表示至结尾
<字符串>[M:N:K] #根据步长K对字符串切片,[::-1]字符串逆序排列
![7794b8b3004ff5a092b4082937c4bce7.png](https://i-blog.csdnimg.cn/blog_migrate/195057b053455a095d92aba52bafa008.png)
另外,字符串还有个特殊字符,叫转义符
转义符表达特定字符的本意(格式化控制符),可以形成一些组合,表达一些不可打印的含义。
(在行尾时) | 续行符 | n | 换行 |
反斜杠符号 | v | 纵向制表符 | |
' | 单引号 | t | 横向制表符 |
" | 双引号 | r | 回车 |
a | 响铃 | f | 换页 |
b | 退格(Backspace) | oyy | 八进制数,y 代表 0~7 的字符,例如:012 代表换行。 |
e | 转义 | xyy | 十六进制数,以 x 开头,yy代表的字符,例如:x0a代表换行 |
000 | 空 | other | 其它的字符以普通格式输出 |
(在行尾时) | 续行符 | n | 换行 |
反斜杠符号 | v | 纵向制表符 | |
' | 单引号 | t | 横向制表符 |
" | 双引号 | r | 回车 |
a | 响铃 | f | 换页 |
b | 退格(Backspace) | oyy | 八进制数,y 代表 0~7 的字符,例如:012 代表换行。 |
e | 转义 | xyy | 十六进制数,以 x 开头,yy代表的字符,例如:x0a代表换行 |
000 | 空 | other | 其它的字符以普通格式输出 |
编写代码如下:
print("1使用转义符"")
print("2使用转义符空格n换行了")
print("3使用转义符空000")
![f79569d11bcde12d5deafc0b1a0600c6.png](https://i-blog.csdnimg.cn/blog_migrate/a6973e6031d80733d9ca79129b52cdba.jpeg)
字符类型的表示学习完了,接下来学习基本的字符串操作符,内容简单,但是在编程中会经常遇到,格式如下:
![fbb70cce135bee9f789dc275844bb983.png](https://i-blog.csdnimg.cn/blog_migrate/788ebe4641b6b4223f2294a879666a5b.jpeg)
我们编写个程序,在动物园中,每个动物有自己的编号。假设输入数字1-6,自动输出对应的动物(字符串)名称,代码如下:
zoo="小鸭子小狐狸大老虎大狮子小青蛙小猴子" #字符串
num=eval(input("输入动物编号")) #输入数字并去掉双引号
max=(num-1)*3 #输入的数字乘以3,确定对应动物最大的字符串位置
print(zoo[max:max+3]) #输出动物园的动物名称
![070da96c563523a688ad3e286bb799b1.png](https://i-blog.csdnimg.cn/blog_migrate/6a8b20c0e4642ffafc3851d3d72b98b4.png)
是不是很简单呢,接下来进入字符串处理函数的学习。Python解释器提供了一些内置函数,共5个,如下图所示:
![e470656078c552d06a1480235cb6d0df.png](https://i-blog.csdnimg.cn/blog_migrate/37cf25a41cf88e1cd98452057b29458f.jpeg)
这些只是需要记忆,没有复杂的要求,举例如下:
print(len("一二三四五")) #计算字符串的元素个数
print(str(1234)) #将1234(任意类型)转换成字符串
print(chr(1004)) #将Unicode中的1004对应的字符输出
print(ord("真")) #将字符串对应的Unicode值输出
print(hex(72)) #将十进制72转换成十六进制
print(oct(10)) #将十进制10转换成八进制
输出的结果如下图所示:
![b50cb105466266b4d36f1654b0af52ee.png](https://i-blog.csdnimg.cn/blog_migrate/9bdd684a4f728b7d88cf2acafdaae93e.png)
小知识:每个字符在计算机中可以表示一个数字,叫做编码,通常用的是ASCII码,主要用在英文字符,很多国家的字符都没有收录,这时提出了建立Unicode码,涵盖了几乎所有的字符。
有趣的字符串处理函数学习完毕,进入字符串处理方法的学习中,在python中,所有数据类型都封装成一个类,字符串也是一个类,在面向对象中,称这类函数为“方法”,表达式为<a>.<b>(),内置方法有43个,现在把最最常用的展示出来,以后遇到其他的再学习(str代表字符串或变量)
![a30c1f72f2bc5fccefb63fb346101fc9.png](https://i-blog.csdnimg.cn/blog_migrate/3e959019d72af9d6cd4231ade21e3a9f.jpeg)
这些该怎么用呢?很简单,我们编写个小程序展示一下:
print("伟大的祖国".split()) #字符串输出为列表
print("伟大的祖国".center(15,'*'))
#字符串居中显示,定义为15个字符,不够的用*添加,
print("伟大的祖国".zfill(10))
#定义为10个字符,字符串不够,在之前以0添加
print("*".join("伟大的祖国")) #在每个字符串后加*
输出结果如下:
![8e0d7b8f00321b43c96cc98d0087cc8c.png](https://i-blog.csdnimg.cn/blog_migrate/323fc40cac72f57e947037d5a4069be7.png)
到了最后环节,重点学习一下内置的字符串处理方法的format(),字符串格式化用于解决字符串和变量同时输出时的格式安排。格式如下:
![e7267b9e7c4e3229d38f8c82d2dab755.png](https://i-blog.csdnimg.cn/blog_migrate/a0c2b8ef6fb59a2816a44211e6cab1b9.png)
模板字符串由一系列槽组成,用来控制修改字符串嵌入值出现的位置,就是将format()方法中的逗号分隔的参数按照序号关系替代到模板字符串的槽中,槽用{}表示,如果大括号中没有序号,则按照出现顺序排列。
![8a82b5583197884b4f771217a7a69618.png](https://i-blog.csdnimg.cn/blog_migrate/064bda3781b172d613245b5173115ed1.png)
![e5b4437d20c745ff0c0702f4839e8111.png](https://i-blog.csdnimg.cn/blog_migrate/aaa3f83ec3dd31d9e6ffb38c905e4391.jpeg)
![cb398b97a2740dddcc334f68a06bd300.png](https://i-blog.csdnimg.cn/blog_migrate/2dc298f2bc59f211db2f7c4d2b7ee4e0.jpeg)
具体使用方法举例如下:
print('{} and {}'.format('hello','world')) # 默认左对齐
print('{:10s} and {:>10s}'.format('hello','world')) # 取10位左对齐,取10位右对齐
print('{:^10s} and {:^10s}'.format('hello','world')) # 取10位中间对齐
print('{} is {:.2f}'.format(1.123,1.123)) # 取2位小数
print('{0} is {0:>10.2f}'.format(1.123)) # 取2位小数,右对齐,取10位
输出结果如下图:
![0106c5bf6e13f43c9c8a9222eb4b02af.png](https://i-blog.csdnimg.cn/blog_migrate/890b32163c76650674ee910a008e4873.png)