python-2.7 - 来自行的Python条带模式匹配
问题描述
我正在尝试使用此代码通过日志文件上的模式匹配来去除时间戳
searchfile = open(file, "r")
pattern1 = ("STRING1", "STRING2")
pattern2 = ("STRING1", "STRING3")
for line in searchfile:
if all(s in line for s in pattern1):
time1 = line.strip().split()
print("Start: " + time1[3])
if all(s in line for s in pattern2):
time2 = line.strip().split()
print("End: " + time2[3])
但是,当我运行它时,“结束”打印出现两次,第一个“结束”继承了“开始”的值
下面的输出;
Start: 00:00:01:543
End: 00:00:01:543
End: 00:00:01:841
Start: 00:00:05:645
End: 00:00:05:645
End: 00:00:05:903
Start: 00:00:12:408
End: 00:00:12:408
End: 00:00:12:640
Start: 00:00:14:648
End: 00:00:14:648
End: 00:00:14:871
Start: 00:00:22:677
End: 00:00:22:677
End: 00:00:22:916
我不能在“结束”时间有另一个 for 循环,因为它不会导致连续的“开始-结束”输出。我尝试为“结束”时间分配不同的变量名称,但结果仍然相同。
解决方案
刚刚发现问题出在pattern2字符串过滤器上。旧的条件字符串产生两个结果集,其中还包括 pattern1 的结果集。需要在模式 2 中包含另一个标准字符串,它现在可以工作。
Start: 00:00:01:543
End: 00:00:01:841
Start: 00:00:05:645
End: 00:00:05:903
Start: 00:00:12:408
End: 00:00:12:640
Start: 00:00:14:648
End: 00:00:14:871
Start: 00:00:22:677
End: 00:00:22:916
Start: 00:00:27:419
End: 00:00:27:649
Start: 00:00:31:633
End: 00:00:31:858
Start: 00:00:35:605
End: 00:00:35:857
Start: 00:00:40:314
End: 00:00:40:597
Start: 00:00:41:875
End: 00:00:42:110
推荐阅读
- linux - 如何在 Debian 10 Buster XFCE 中启用第三个屏幕
- html - Spring Security 自定义登录页面不允许我进入
- python - 时间序列分析的熊猫日期时间问题
- r - 在r中创建一个计算列表中元素数量的函数
- python - 为什么使用停用词或 nltk 语料库后有些英语单词会被删除?
- javascript - Apexcharts 工具提示样式在角度更新后中断
- sql - 如何将特定列变为行并更改 SQL 中的特定值
- r - R中数据帧中dput(head(data,20))的输出
- css - Delphi Webbrowser:将 div 样式更改为显示:无
- excel - 如何复制区域并粘贴到可见(过滤区域)