我有一个如下结构的日志(txt文件)
At 2020-07-15 14:05:18 - Markers detected in this frame : 3 | 6 |
ID :6 out of compartment G2A44
或
At 2020-07-15 14:05:47 - Markers detected in this frame : 3 | 0 | 9 |
ID :9 out of compartment G2A13
ID :9 out of compartment G2A45
我需要你的信息
当我在At 2020-07-15 14:05:47 - Markers detected in this frame : 3 | 0 | 9 |
下面只有一行时,所有内容都将被表达式捕获
expr = 'At ([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2}) - Markers detected in this frame : ([0-9]{1,} .{1,})\s(ID..[0-9])\sout of compartment ([\w]{4,})'
但是我怎样才能在regex中获得第二行或第三行与相同的组匹配呢
import re
expr = 'At ([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2}) - Markers detected in this frame : ([0-9]{1,} .{1,})\s(ID..[0-9])\sout of compartment ([\w]{4,})'
f = 'XX.txt'
file = open(f,'r')
text = file.read()
m = []
m = re.findall(expr,text, re.MULTILINE)
print(m)
您要求的是解析器。你需要一台状态机
基于标头表达式测试目标行,并存储一些值。如果未通过该测试,则基于下一个表达式测试该行,并对新的匹配项和存储的值进行处理
不要期望一次得到所有的线路。这是一个两阶段的工作
相关问题 更多 >
编程相关推荐