Python-正则表达式(给同事培训篇)

简介: Python-正则表达式(给同事培训篇)

本篇是我在公司给同事培训的内容,大致内容都会写出来,但是,写文总是没有在现场说的那么多,所以,则重编写。

前言

本篇意在使得同事学会基本是正则表达式,因为后续可能会需要给定框架后,自己编写正则表达式。所以本篇是理论+实战。

数据源(内部日志数据,截取一部分讲):

...
[13:52:44]<batterry>
[13:52:44]vol    : 10327 mv
[13:52:44]cur    : 4344 ma
[13:52:44]cap    : 25 %
[13:52:44]tpwr   : 44.86 w
[13:52:44]<motor>
...

需求

我有N个这样的数据源,我只需要与之间的的cap对应的25。

在这个需求之前,为了不那么抽象化,在之后还有很多其他的数据例如,在之前还有很多其他数据,例如也就是说,正确的数据源其中的片段应该是:

[13:52:44]<fruits>
[13:52:44]apple  : 11111 mv
[13:52:44]banana : 22222 mv
[13:52:44]vol    : 10327 mv
[13:52:44]<batterry>
[13:52:44]vol    : 10327 mv
[13:52:44]cur    : 4344 ma
[13:52:44]cap    : 25 %
[13:52:44]tpwr   : 44.86 w
[13:52:44]<motor>
[13:52:44]bird   : 999999 w 
[13:52:44]monkey : 888888
[13:52:44]tpwr   : 44.86 w
[13:52:44]<animals>

但是真正的数据源是有N多个这样的片段组成,我需要拿到我需要的数据。怎么做?

思路

首先,我需要用什么库,这里默认re正则表达式。那么我怎么匹配?

1、标志位,也就是我需要告诉正则表达式,我从什么地方开始

2、结束位,也就是告诉正则表达式,我需要在什么位置结束。

3、表达式,怎么写,能保证我的正则的健壮性,以及准确性。

在这之前,肯定是先要可以将数据拿出来。

操作

首先我先将做为开始结束,进行匹配,然后将得到的结果再次处理,拿到cap的对应的值。

第一步

import re
values = """
[13:52:44]<fruits>
[13:52:44]apple  : 11111 mv
[13:52:44]banana : 22222 mv
[13:52:44]vol    : 10327 mv
[13:52:44]<batterry>
[13:52:44]vol    : 10327 mv
[13:52:44]cur    : 4344 ma
[13:52:44]cap    : 25 %
[13:52:44]tpwr   : 44.86 w
[13:52:44]<motor>
[13:52:44]bird   : 999999 w 
[13:52:44]monkey : 888888
[13:52:44]tpwr   : 44.86 w
[13:52:44]<animals>
  """
data = re.findall("<batterry>(.*)<motor>", values, re.S)

第二步

知道自己需要匹配的数据有哪些后,就需要写对应的正则了,也需要分析一下匹配策略。

"\s" 匹配空白字符

"\d" 匹配数字字符

"."  匹配任意字符

"*"  匹配0个活多个字符

""  转义,匹配特殊字符

"()" 将所需要的数据单独匹配出来

for key in data:
    volValue = re.findall("\[(.*)\]({})\s*:\s*(\d*)".format("cap"), key)

这里就已经将值都拿出来了,接下来就是为后续做准备,写入CSV还是excel还是做图。都需要组合数据。

第三步

我写的是字典嵌套列表,所以,直接看代码:

volDict = {}
timeList = []
valueList = []
for value in volValue:
    timeList.append(value[0])
    valueList.append(value[2])
volDict["time"] = timeList
volDict["vol"] = volValue[0][1]
volDict["value"] = valueList
print(volDict)

这样就能拿到对应的数据了,这里还匹配了时间戳,这是必不可少的环节。


本章就到这了,期待后续~

目录
相关文章
|
7天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
19 5
|
12天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
21 1
|
1月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
|
1月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
28 7
|
1月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
17 0
|
1月前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
67 0
|
2月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
17 0
|
2月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
|
2月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号