字符串操作
字符串是我们用的最多的数据类型之一,在前面的章节中,我们了解了字符串的简单结构,以及字符串提供的一些方法。
1.处理字符串
1.1 转义字符
正常的字符串是由一对单引号组成,但是如果内容里本身存在单引号怎么办?
比如:spam = 'This is cheng's cup'
这句话里显示了三个单引号,python只会认为This is cheng是一个完整的字符串,后面多余的内容无法识别。
在处理这类问题里,python提供了两种方法
![30eb56caf4347dd312348d924fe0b421.png](https://i-blog.csdnimg.cn/blog_migrate/9073235bd54bbc389a9ec54b94f6dc8f.jpeg)
结果:都能正确输出 This is cheng's cup
解析:第一种方式:如果单引号需要显示出来,最外层用双引号表示,同样的如果内容中存在双引号需要显示出来,最外层用单引号表示,但是如果字符串中既有单引号,又有双引号需要显示出来,这时候就用到了后面一种方式,转义符。用反斜杠 +需要转义的字符表示
![a660f92adaaf19a92cc20d25373ea8eb.png](https://i-blog.csdnimg.cn/blog_migrate/b61b6c3e4c5e3cf1cd4db6ba2895b6da.jpeg)
有时候如果想忽略字符串中的转义字符,可以使用原始字符串,顾名思义,就是你输入啥,我显示啥
例如:
需要打印 spam = r'This is cheng's cup' 这个字符串
结果:This is cheng's cup。原始字符串在字符串的最前面加上字符r。
1.2 多行字符串的表示方法
表示多行字符串的方式有两种
(1):在需要换行的字符后加上 表示换行
(2):用三重引号输入
![3ef5ff0a2ad481eebb5b9901ae0bb3b2.png](https://i-blog.csdnimg.cn/blog_migrate/51156a52c172b6a9be00156fa92d7a15.jpeg)
结果:这两种方式最后单引出来都是两行的hello world,并且注意,三重引号内的所有引号,制表符或者换行,都认为是字符串中的一部分,所以如果三重引号内需要用单引号表示,不需要转义。
1.3 多行注释
之前章节中讲过,注释的表示方式是#加上注释的内容,但是如果需要注释的内容比较多,当然每行前面都可以加一个#,但是怎样代码就显得不是很美观了,所以,如果遇到多行的注释的,我们就可以使用三重引号表示
![15470b0e29c3f1696807ea8463f3a83c.png](https://i-blog.csdnimg.cn/blog_migrate/49de7238c17acd26535e25220a719f50.jpeg)
这样表示是否更美观一点,可读性是否更强一点
1.4 字符串下标和切片
在前面的章节中,详细讲过了列表的下标和切片,字符串可以看成由多个字符组成的列表,结构类似于列表
这里再回顾下:
![414bdd0c2d9f7bcd255f1ffcfb14f6f6.png](https://i-blog.csdnimg.cn/blog_migrate/28b95201784ff808062282c7fb4ca9d8.jpeg)
结果:
![e9b582218dc519c7f5a8dca27071cfb3.png](https://i-blog.csdnimg.cn/blog_migrate/fa68f189021342cb409e43399475be37.jpeg)
解析:第一个输出第一个字符为h,第二个输出第一个字符到下标是5(但不包括5)的字符串,即输出0到4的内容。
1.5 in 和 not in
表示单个字符或者字符串是否存在于原始字符串中
![db0a9727e7c85dfb402e7a81de34ef90.png](https://i-blog.csdnimg.cn/blog_migrate/1f289070d90e2cbc1142782531d27ac4.jpeg)
结果:输出都为True
2.字符串相关的方法
2.1 字符串方法 upper()、lower()、isupper()、islower()
upper():生成大写字符串
lower():生成小写字符串
isupper():是否是大写字符串
islower():是否是小写字符串
![2b1788d6233ca2da7785d647f7c65cb3.png](https://i-blog.csdnimg.cn/blog_migrate/e8a29c6e2ae7ab270acb3166a4dee270.jpeg)
返回:
![dd624d45ee633798b1676f75888fef11.png](https://i-blog.csdnimg.cn/blog_migrate/cf19be9ce79d67ab1b0953fce628b597.jpeg)
2.2 isX字符串方法
![e36b6e28425f5f938b4d9896744b6797.png](https://i-blog.csdnimg.cn/blog_migrate/b563992016236c0c10028867004275a7.jpeg)
这些方法,在一些场景中非常实用,比如说,在验证用户名密码的时候,这些方法可以组合使用
2.3 字符串方法 startswith()和endswith()
字符串是否以某些内容开头或者结束,返回True 或者 False
![722b3ce63fdaa630715b381562b28fda.png](https://i-blog.csdnimg.cn/blog_migrate/ffebffaaa71515ec8c5810e38e413c8a.jpeg)
结果:
![82f5fe9ecc4bba44cd858bd21d923693.png](https://i-blog.csdnimg.cn/blog_migrate/8c0d1795cf2f8400ade06a9bd1d99d09.jpeg)
2.4 字符串方法 join()和split()
join():join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串
split():split()方法和join()方法相反,返回一个以特定分隔符截取的列表
![5357b99b8b34b0a7b6924e7851823352.png](https://i-blog.csdnimg.cn/blog_migrate/93ce1f83f79ec2614b53d9beb1fc3647.jpeg)
返回:
![493bb5e215476311bc2f611165c797a2.png](https://i-blog.csdnimg.cn/blog_migrate/e70ab4bac2db6c864af9323120c18efb.jpeg)
解析:第一个是把列表里的数据以#拼接,返回字符串,第二个是按照#截取字符串,返回列表数据
2.5 用rjust()、ljust()和center()方法对齐文本
rjust()和ljust()字符串返回他们的填充版本,这两个字符串的第一个参数是字符串的长度,第二个参数是填充的字符
![6969f2ca18d79ee8a78c078d621af9e7.png](https://i-blog.csdnimg.cn/blog_migrate/af4a2a4b0ec47ca6e1d8d377d778ab83.jpeg)
返回
![e89bc134ae8dec5a992af33b18304c73.png](https://i-blog.csdnimg.cn/blog_migrate/67ab648c699571e0f6c2ea34f6b2f18e.jpeg)
解析:spam.rjust(10,'*')方法是右对齐,一共10个字符,hello占用了5个 其余的用*填充
spam.ljust(10,'*')相反,center(10,'*')居中对齐,其余用*填充。
这些方法在文本处理上会非常有用
比如:
![2704f3c7fb7bbc46b67590d953e1e347.png](https://i-blog.csdnimg.cn/blog_migrate/d9653ed00c2578384341db186ff33938.jpeg)
返回:
![3fbc5aeac7edc94674ca75362d77ccff.png](https://i-blog.csdnimg.cn/blog_migrate/c3c32601e89ae4fb514e0ce8a78f9742.jpeg)
解析:字典数据的key左对齐,其余用*填充,value右对齐,其余用空格填充
2.6 用strip(),rstrip和lstrip()删除空白字符
strip():默认删除字符串两边的空格,如果加参数,则删除字符串左右两边的指定内容,内容中字符的顺序不固定
rstrip():删除字符串右边的内容,同strip()
lstrip():删除字符串左边的内容,同strip()
![6a80d5401f650fd23804997a02f3b199.png](https://i-blog.csdnimg.cn/blog_migrate/a0c360830f2af26d39411c04615165ef.jpeg)
结果:
![05dcd33b965ee0043d19e264c3a43e23.png](https://i-blog.csdnimg.cn/blog_migrate/2d922884cb52c8b094bf8bd5d2f07054.jpeg)
解析:第一组数据是正常的删除空格,但是不删除字符串中间的空格
第二组数据是删除左右两边的ask字符,不要求ask的字符顺序
但是如果我们想删除一个字符串中所有的空格,怎么做。由如下几种方式
(1):通过字符串的replace()方法,把空格替换成空值
(2):通过上面讲过的方法,先用split()方法截取,默认是空格,返回列表数据,然后再用join()方法拼接
![8a14ef6da8d21741571d73ee18e81ccd.png](https://i-blog.csdnimg.cn/blog_migrate/2698f1b35a4030f75499d7db49a62def.jpeg)
2.7 用pyperclip模块拷贝黏贴字符串
pyperclip模块提供了copy和paste的功能
![fa4286c2c1faab1a16520eaebc70db7f.png](https://i-blog.csdnimg.cn/blog_migrate/49c57231d9dff92c40abe753a65a4ac8.jpeg)
结果:返回hello world.先复制spam变量中的内容,然后把黏贴的内容赋值给变量spam1
在现实生活中,我们可能会经常忘记各个应用的密码,有时候我们会记在一个文本里,但是每次去打开文本再去赋值黏贴很麻烦,我们可以python提供的方法轻松解决。
![4370a3b0327237bd138ce99ab85c7a3f.png](https://i-blog.csdnimg.cn/blog_migrate/9ee3d6fadbd38beaca82a675dd512922.jpeg)
1.我们可以先编写一个这样的python文件,先列出需要记住的应用密码,存放在字典数据里。
2.如果输入指定的应用名,就会自动复制好对应的密码,我们只要直接ctrl+v就ok了
![af5ac517b6ac6576458b49cac6a2a2e2.png](https://i-blog.csdnimg.cn/blog_migrate/c5dbae146776ad87a5a296a29a3c89e0.jpeg)