Python-初识正则表达式-指定匹配简单的日志数据

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Python-初识正则表达式-指定匹配简单的日志数据

本章来小讲一下正则表达式的运用。

测试数据

测试数据是本公司的部分日志信息,截了一小段出来。用于练习正则。

[18:51:02]+CONNECTION TIME OUT
[18:51:11]+DISCONNECT
[18:51:13]+CONNECTED>>0x11899AAC51E3
[18:51:14]
[18:51:15]# 
[18:51:21]# log 4
[18:51:21]4
[18:51:22]# 
[18:51:22]------info(11.001)------
[18:51:22]<charge>
[18:51:22]vol    : 676 mv
[18:51:22]cur    : 1 ma
[18:51:22]status : null
[18:51:22]chgen  : 0
[18:51:22]pwout  : 1
[18:51:22]<warn>

万能匹配公式(.*?)

我愿称之为傻瓜式匹配,一起来看看,为什么这么说

如上数据,我需要匹配出CONNECTED>>0x11899AAC51E3中的"0x"

import re
datas = """
[18:51:02]+CONNECTION TIME OUT
[18:51:11]+DISCONNECT
[18:51:13]+CONNECTED>>0x11899AAC51E3
"""
values = re.findall(">>(.*?)1",datas)
print(values)  # ['0x']

至于为什么使用findall无需疑惑,后面都会讲到。这里的意思就是在全部数据中匹配出介于">>"与"1"之间的数据,也就是0x。

那么我想匹配其他数据呢,例如"cur"

import re
datas = """
[18:51:22]<charge>
[18:51:22]vol    : 676 mv
[18:51:22]cur    : 1 ma
[18:51:22]status : null
"""
values = re.findall("](.*?): 1",datas)
print(values)  # ['cur    ']

这也就是,为什么称之为傻瓜式匹配了,你需要什么数据,原封不动的讲所需的数据前后的字符都抄上来即可,当然记得将(.*?)带上。

缺点也很明显,不够灵活,不够方便,如上数据匹配出来就会带有很多空格。

精准匹配

接上面的例子。

import re
datas = """
[18:51:22]<charge>
[18:51:22]vol    : 676 mv
[18:51:22]cur    : 1 ma
[18:51:22]status : null
"""
values = re.findall("](c\w*)\s",datas)
print(values)

这里用到了\s与\w,\s是匹配空白字符。\w是匹配单词字符。在这里的作用是匹配0个或多个。\w也就是匹配0个或者多个单词字符。

所以此处的意思是,从"]"匹配以c开头的0个或多个单词字符一直到空白字符结束。也久成功的匹配出了cur

匹配时间戳

上述例子中 ,需要将所有的时间戳匹配出来,怎么操作?照样可以(.*?)

import re
datas = """
[18:51:22]<charge>
[18:51:22]vol    : 676 mv
[18:51:22]cur    : 1 ma
[18:51:22]status : null
"""
values = re.findall("\[(.*?)\]",datas)
print(values)
# ['18:51:22', '18:51:22', '18:51:22', '18:51:22']

稍微有点不同的是,这里需要转义一下"[]",不然无法正常匹配到。



小结

本章5个知识点,注意举一反三

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
21天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
143 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
19天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
27天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
1月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
46 3
|
1月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
47 5
|
1月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
29 1
|
1月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
79 0
|
1月前
|
数据采集 存储 分布式计算
超酷炫Python技术:交通数据的多维度分析
超酷炫Python技术:交通数据的多维度分析
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。