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)
posted @ 2020-10-13 12:32  张贺贺呀  阅读(44)  评论(0编辑  收藏  举报