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日志并进行多维度分析。
目录
相关文章
|
1月前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
152 83
|
6天前
|
API 开发工具 Python
|
18天前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
14天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
16天前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
22天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
1月前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂
|
21天前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
9月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
114 2
|
9月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

热门文章

最新文章