python_字符串切割
前言
如果我们通过python+shell两种语言的方式去传统的linux发行版上做自动化的运维是很爽的,因为在做任务的时候你可以将python和shell混在一块使用,比如你想通过python返回当前CPU的使用率,你可以把把/proc伪文件系统内部关于CPU的信息全都返回给python,然后通过python的逻辑进行切割得到我们想的的数值,也可以使用shell的逻辑,比如我们可以直接通过python建立sshl通道,然后将shell语言当中的文件三剑客命令传到shell直接把想要CPU信息过滤出来,那这样的话,python最终得到的返回值就是一个现成的数字,那我们就不用再通过python进行字符串进行切割了。
但在一些网络设备上,shell命令的支持就很差了,在这种情况下就只能使用python进行字符串切割了,我们这一节就是来用复习一下python的字符串切割。
字符串的拼接
# 字符串和变量之间的拼接
name = "zhanghe"
print(f'My name is {name}')
"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py
My name is zhanghe
# 字符串和数字之间的拼接
number = 14
print(f'我国共有{14}亿人')
"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py
我国共有14亿人
# 改变print的结束符和使用字符串拼接符号
first_name = "zhang"
last_name = "he"
print(first_name,end="")
print(last_name)
print(first_name + last_name)
"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py
zhanghe
zhanghe
字符串基本操作
# 字符串内容
net_address= '''
ip:192.168.80.130
gateway:192.168.80.254
DNS1:223.6.6.6 DNS2:223.5.5.5
'''
基本转换
# 三括号包裹里面的内容都算是字符串
# 可轻易将字符串转换为列表
# 也可以将字符串转换为元组
print(type(net_address))
print(list(net_address))
print(tuple(net_address))
"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py
<class 'str'>
['\n', 'i', 'p', ':', '1', '9', '2', '.', '1', '6', '8'……]
('\n', 'i', 'p', ':', '1', '9', '2', '.', '1', '6', '8'……)
.JOIN
join():将序列(也就是字符串、元组、列表、字典)中的元素以指定的字符连接生成一个新的字符串。
# 以*为分隔符,格式化字符串,如下所示:
# 每一个字符都单独看成一个元素
print(net_address)
net_address = '*'.join(net_address)
print(net_address)
"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py
ip:192.168.80.130
gateway:192.168.80.254
DNS1:223.6.6.6 DNS2:223.5.5.5
*i*p*:*1*9*2*.*1*6*8*.*8*0*.*1*3*0*
*g*a*t*e*w*a*y*:*1*9*2*.*1*6*8*.*8*0*.*2*5*4*
*D*N*S*1*:*2*2*3*.*6*.*6*.*6* *D*N*S*2*:*2*2*3*.*5*.*5*.*5*
SPLIT
通过分隔字符,将字符形式转为列表list形式
net_address= '''
ip:192.168.80.130
gateway:192.168.80.254
DNS1:223.6.6.6 DNS2:223.5.5.5
'''
# 以换行符为一个单位进行生成列表
print(type(net_address))
list_net_address = net_address.split("\n")
print(list_net_address)
print(list_net_address[1])
"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py
<class 'str'>
['', 'ip:192.168.80.130', 'gateway:192.168.80.254', 'DNS1:223.6.6.6 DNS2:223.5.5.5', '']
ip:192.168.80.130
注意,上述打印结果当中下标0并不是我们想的IP地址,而是空,这是因为在IP的前面有一个换行符导致的。
如果我们在一段文字当中切出我们想的值,可以直接在split以这个字符为分割符,不断的切,有点类似于linux当中的grep,如下所示:
test_str = '''
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:84:65:c3 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.19/24 brd 192.168.3.255 scope global dynamic noprefixroute eth0
valid_lft 86315sec preferred_lft 86315sec
inet6 fe80::548a:e9d4:6f9c:41e0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
'''
test1 = test_str.split("eth0")[1].split("inet")[1].split("brd")[0]
print(test1)