一、字符串(用单双三引号定义的一串字符)
1.在交互式界面认识Python代码在内存中的存储格式,globals()可在交互界面查看所有定义的变量
一般的字符串使用单引号标记
>>> a = 'cat' //定义一个变量a,赋值a为字符串cat,这里的cat就是字符串
>>> a
'cat' //在内存中储存是带引号的,类似于网络中使用tag标记二层VLAN报文
>>> print(a)
cat
>>> b = "cat"
>>> b
'cat' //不管你定义时输入的是单双三引号,在内存中储存都是单引号的形式
>>> a == b //a 与 b 在Python是完全相等的
True
字符串中带引号的用双引号标记
>>> c = "it's a cat" //此时字符串中带引号,我们需要用双引号或者三引号避免冲突
>>> c
"it's a cat" //内存中储存的也是双引号,不管你用的是三还是双引号
>>> c = 'it's a cat' //单引号报错
File "<stdin>", line 1
c = 'it's a cat'
转义字符,在Python中可以使用\进行转义,转义的意思就是转变格式
>>> d = 'it\'s a cat' //在字符串中的引号前面加\进行转义,告诉Python他不具有普通引号的意义,也就是标识普通字符串的意义,使其只具有字符的意义
>>> d
"it's a cat" //在内存中储存格式
当我们需要在文本中输入\的时候,我们需要加双\\,意思是对转义字符进行转义,使后面一个\不具有转义的作用,变为文本
>>> e = 'd:tengxun\down' //在定义文件目录变量时候会经常使用,
>>> e
'd:tengxun\\down' //Python作为高级编程语言会自动帮你进行转义,在较早的Python版本需要手动输入\\
2、\转义字符的多种运用场景
在末尾添加\可以续行
a = 'dasdsdas\
dasdadsafsaf'
print(a)
打印结果:dasdsdasdasdadsafsaf
转义的作用,与上面演示一致
\b有退格的作用
a='he \bllo' #不仅仅消除空格,如果没有空格就消除前一个字母
print(a)
打印结果:hello
解决字符串中带有\b的场景,就在\前加一个\也就是\\,对转义字符进行转义
a='D:tengxun\\bin' #例如D盘tengxun目录下的bin文件
print(a)
打印结果:D:tengxun\bin
\n有换行的作用
a ='hello \nmy friend'
print(a)
打印结果:hellow
my friend
\t是横向制表符,就是横向平移数据用的
a= 'jack /t75kg /t185cm'
print(a)
打印结果:jack 75kg 185cm
\0是空的意思,感觉没啥用
>>> a = '\0'
>>> a
'\x00' #空在内存中储存格式
>>> print(a)
#输出空
3、三引号的运用
a = '''
姓名 身高 年龄
jack 185 25
'''
print(a)
打印结果:
姓名 身高 年龄
jack 185 25
三引号会将你输入的字符完整的打印出来不会报错,如果我们用单引号就必须自己手动加横向位移以及退格实现,三引号的作用就是你输入什么数据,给你打印什么数据,不改变格式,在处理表格数据时非常实用。
4、字符串的运算
a = 'girl' ; b = 'boy'
print(a+' and '+b)
输出结果:girl and boy
print('!' * 30)
输出结果:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5、字符串整形
a = 12345
print(type(a))
输出:<class 'int'> #a为一个整数格式
b = str (a)
print(type(b))
输出:<class 'str'> #b为一个字符串格式
将其他变量更改为字符串格式,使用代码:定义一个新变量=str(需要整形的变量)
6、字符串长度测量及索引
a='dsagdgaijewdsada'
print(len(a)) #输出字符串的长度
结果:16
print(a[0]) #输出字符串a的第0位
print(a[-16]) #也可以在从负方向取-1对于最右边第一个
结果:d
注意:取数就相当于在X轴上取某一个横坐标,可以以正坐标为准,也可以以负坐标为准。
7、字符串的切片(切片规则为左闭右开,也可以取负坐标)
a='dsagdgaijewdsada'
print(a[3:7]) #取第3-7位不包含第七位
结果:gdga
b=a[3:7]
print(b)
结果:gdga
print(a[-16:-5])
结果:dsagdgaijew
注意负坐标取右边所有的方法print(a[-16:]),右边不输就可以了
8、字符串的分割
当我们处理一大串字符串的时候,比如使用Python抓取一段路由器OSPF邻居状态信息,我们得到的是二进制(前面带b'则表示是二进制)的阿斯克机器码并不是友好界面。
这时我们需要首先通过代码进行解密:变量名称.decode()
再使用代码以行为依据将数据分割为一个列表:变量名称.decode().splitlines
syslog=b'dis ospf peer brief \r\n OSPF Process 1 with Router ID 12.0.0.1 \r\n Peer Statistic Information \r\nArea Id Interface Neighbor id State \r\n 0.0.0.0 GigabitEthernet0/0/0 12.0.0.2 Full'
print(syslog.decode()) #解密
输出结果:
OSPF Process 1 with Router ID 12.0.0.1
Peer Statistic Information
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 12.0.0.2 Full
a=(syslog.decode().splitlines) #定义变量a,将syslog解密并以行为依据分割为一个列表赋值给a
print(a)
输出结果:
['dis ospf peer brief ', ' OSPF Process 1 with Router ID 12.0.0.1 ', ' Peer Statistic Information ', 'Area Id Interface Neighbor id State ', ' 0.0.0.0 GigabitEthernet0/0/0 12.0.0.2 Full ']
此时我们就可以抓取想要的关键字了,比如我们想要抓取邻居状态
b=a[3]+a[4] #赋值一个变量为a的第三位+a的第四位
print(b)
输出结果:注意此时重新抓数据后列表又变成字符串了
Area Id Interface Neighbor id State 0.0.0.0 GigabitEthernet0/0/0 12.0.0.2 Full
c=b.split() #自动对字符串进行分割,形成列表,字符串中空格较多Python会自动选择空格进行分割
print(c)
输出结果:
['Area', 'Id', 'Interface', 'Neighbor', 'id', 'State', '0.0.0.0', 'GigabitEthernet0/0/0', '12.0.0.2', 'Full']
d=c[5]+': 'c[9] #中间增加一个冒号方便我们阅读
输出结果:
State: Full
注意:此时我们可以简写代码无需赋值这么多变量,从b开始的赋值都可以通过简写完成
b=a[3].split()[5]+': '+a[4].split()[3]
print(b)
输出结果:
State: Full
注意此时我们在b上对位值时a[3]列表与a[4]列表是分开为两个列表的
即a[3].split()为:
['Area', 'Id', 'Interface', 'Neighbor', 'id', 'State']
a[4].split()为:
['0.0.0.0', 'GigabitEthernet0/0/0', '12.0.0.2', 'Full']
也就是分开取值后再合并,先取后合并
9、交互式字符串
workday=input('您本月工作了多少天:')
print('您本月的工作收入为:',int(workday)*500) #使用int定义字符串workday格式为数值
输出结果:
您本月工作了多少天: 30 #需要你输入天数,假如我输入30
您本月的工作收入为: 15000 #会返回运算结果
10、格式化字符串
workday=input('您本月工作了多少天:')
print('您本月的工作收入为:{}'.format(int(workday)*500) )别忘记{}后面的点“.”
print('您本月的工作收入为:%s' %(int(workday)*500) ) #别忘记%后面的括号
print(f'您本月的工作收入为:{int(workday)*500}' ) #别忘记f
输出结果:
您本月工作了多少天: 30 #需要你输入天数,假如我输入30
您本月的工作收入为: 15000 #会返回运算结果
11、字符串的控制符
a="dasdawdasdwa"
print(a.replace('a','A')) #替换字符串中指定的所有字符,红色部分不输入就是默认删除蓝色字符
输出:
dAsdAwdAsdwA
print(a.strip(d)) #删除字符串的指定位置,只能删除最外侧的字符,左侧或者右侧都可以,红色为空表示删除左右两边所有的空格
输出
asdawdasdwa