找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1582|回复: 2

[求助] python提取log日志里的关键数据

2

主题

3

帖子

3

积分

贫民

积分
3
德累斯顿石头人 发表于 2022-1-23 14:42:34 | 显示全部楼层 |阅读模式
想请教社区里各位大佬一个问题,关于训练后的log日志提取数据。我在提取数据时,遇到了问题。想提取6类关键数据分析,source_train-Loss(源域训练损失), source_train-Acc(源域训练精度),source_val-Loss(源域验证损失),source_val-Acc(源域验证精度),target_val-Loss(目标域验证损失),target_val-Acc(目标域验证精度)。试着用re.search(),根据关键词如’source_train-Loss’,’source_train-Acc’等提取对应的数字。运行程序,每次是按行提取,但遗憾的是,无论提取条件是’source_train-Loss’还是’source_train-Acc’,只会提取每行的第一组数字,如下图,source_train-Loss和source_train-Acc提取到的都是0.9609,提取不到0.6331。想请教如何解决。感觉,python程序是按行找关键字,找到关键字,就直接提取该行满足正则表达式最靠前的数据。但不清楚该如何解决这个问题。
图片1.jpg

提取log数据所用代码截图
图片2.jpg
图片3.jpg
回复

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
roger0wang 发表于 2022-1-27 10:58:18 | 显示全部楼层
本帖最后由 roger0wang 于 2022-1-27 10:59 编辑

re.search只要从字符串找到第一个匹配后,就会返回结果,不再继续查找了。
你所有的search都是从line搜索搜索,所以你的('[0-9]\.[0-9]+',line)永远只匹配到line最左边的匹配。
根据你这个思路,可以通过对line切片来找后续的值,如dn=re.search('[0-9]\.[0-9]+',line),改成dn=re.search('[0-9]\.[0-9]+',line[d.end():]),其他几个地方参照这个调整,应该就能实现你的需求了。
回复 支持 反对

使用道具 举报

2

主题

3

帖子

3

积分

贫民

积分
3
德累斯顿石头人  楼主| 发表于 2022-1-29 10:21:12 | 显示全部楼层
roger0wang 发表于 2022-1-27 10:58
re.search只要从字符串找到第一个匹配后,就会返回结果,不再继续查找了。
你所有的search都是从line搜索搜 ...

谢谢大神!!!你说的能实现了!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表