gpt4 book ai didi

正则表达式捕获现有和不存在的数据

转载 作者:行者123 更新时间:2023-12-02 19:08:51 25 4
gpt4 key购买 nike

我正在尝试对一些日志进行分类,以便在 Python Pandas 中进一步分析它们。日志示例如下所示:

Event: Task_01Error:NO_ERROR
Event: Task_01Error:ERROR_MINOR
Event: Task_02Error:NO_ERROR
Event: Task_03Error:ERROR_01Details:BadData
Event: Task_03Error:ERROR_MINOR

我需要将它们分类为(我想要的输出):

Task, ErrorType,Details
01,NO_ERROR,NA
01,ERROR_MINOR,NA
02,NO_ERROR,NA
03,ERROR_01,BadData
03,ERROR_MINOR,NA

到目前为止我得到的是:

^Event: Task_(.*)Error:(.*)Details:(.*$)

仅匹配第四个条目(如预期)。但我实际上需要它来匹配“Details:”字符串后面的信息,或者如果该字符串不存在则什么也不匹配。我需要这种方式的原因是我可以使用正则表达式 Pandas Series String Extract .

换句话说,在最后一组中我需要匹配:

Details:(.*$)  OR ()

我知道一定有一种简单的方法可以做到这一点,但我就是想不通。

谢谢!

最佳答案

使用分配函数创建 2 个新列:

df.assign(
ErrorType = lambda x: x['event'].apply(lambda s: s.split(':')[2].split('Details')[0]),
Details = lambda x: x['event'].apply(lambda s: s.split('Details:')[1] if len(s.split('Details:'))>1 else 'NA')
)

您不需要正则表达式,因为使用 split 很容易提取数据

关于正则表达式捕获现有和不存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64650780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com