Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息

目录

Python正则表达式re库的基本用法

引入re库

各函数功能

总结

使用方法举例

正则表达式语法与书写方式

正则表达式的常用操作符

思科ASA防火墙数据

数据1

数据2

书写正则表达式

Python中pydantic的使用

导入基础数据模板

根据数据采集目标定义Pydantic数据类型

数据分析采集函数 


Python正则表达式re库的基本用法

引入re库

import re

各函数功能

函数 用法
re.match() 从字符串起始位置用正则表达式进行数据匹配,匹配到一个数据立即结束并返回第一个匹配到的结果,返回一个Match object对象
re.search() 从字符串起始位置用正则表达式进行数据匹配,返回一个Match object对象,含有第一个匹配到数据的位置
re.findall() 从字符串起始位置用自定义的正则表达式进行数据匹配,一直尝试匹配到字符串结束,返回匹配到的所有子串,是一个列表
re.split() 从字符串起始位置用自定义的正则表达式进行数据匹配,一直尝试匹配到字符串结束,将字符串按正则表达式匹配到的结果进行分割,返回被分割的子串,是一个列表
re.sub() 从字符串起始位置用自定义的正则表达式进行数据匹配,一直尝试匹配到字符串结束,将字符串中按正则表达式匹配到的子串全部替换为自定义的内容,返回被替换后的字符串
re.finditer() 从字符串起始位置用自定义的正则表达式进行数据匹配,一直尝试匹配到字符串结束,返回一个callable_iterator object对象,可以被迭代,里面每个数据是Match object对象

总结

其实在数据处理中我使用re.search()居多,在使用上也很符合查找内容的惯性思维,把需要采集的数据拆分书写成一个个短小的正则表达式,写出的代码也容易维护,缺点是会对字符串进行多次匹配,会浪费资源,如果设涉及大量数据的分析采集推荐使用re.match()或者是混合使用其他函数,并书写单个较长的正则表达式可以达到节省资源的目的

使用方法举例

data = re.match(正则表达式,需要处理的字符串,匹配选项)

在Python中正则表达式的格式为:r'...正则表达式内容...'

例如data = re.match(r'[0-9]', '123')

正则表达式语法与书写方式

正则表达式的常用操作符

其余可自行搜索用法,本文主要涉及这几个

符号 说明
. 匹配除换行符(\n、\r)之外的任何单个字符
\d 匹配一个数字,等价于[0-9]
\D 匹配一个任何非数字字符,等价于[^0-9]
\s 匹配一个任何空白字符,如空格
\S 匹配一个任何非空白字符
\n 匹配一个换行符
* 匹配前一个字符0次或无限次
+ 匹配前一个字符1次或无限次
() 用于标明匹配组,方便用一个正则表达式匹配多个内容

在学习如何书写正则表达式之前需要先了解下需要处理的数据

思科ASA防火墙数据

数据1

用Python脚本连接思科ASA防火墙执行如下命令获取(此文章不介绍如何采集数据,数据均为样例,和真实环境也会有出入)

show interface ip brief

 回显内容

Interface              IP-Address      OK? Method Status                Protocol
Ethernet0/0            192.168.1.1     YES manual up                    up
Ethernet0/1            10.1.1.1        YES manual up                    up

数据2

执行命令 

show interface detail

回显内容 

Interface Ethernet0 "outside", is up, line protocol is up
  Hardware is i82558, BW 100 Mbps, DLY 100 usec
        Auto-Duplex(Full-duplex), Auto-Speed(100 Mbps)
        Input flow control is unsupported, output flow control is unsupported
        MAC address 001e.4f9c.2345, MTU 1500
        IP address 172.16.0.1, subnet mask 255.255.255.128
        132463 packets input, 9245212 bytes, 0 no buffer
        Received 24 broadcasts, 0 runts, 0 giants
        0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
        0 pause input, 0 resume input
        0 L2 decode drops
        238982 packets output, 15789347 bytes, 0 und
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值