尝试基于python中的重新匹配将数据放在括号中

2024-09-30 16:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python从应用程序日志中获取基于匹配文本的数据节。伪示例如下所示:

Error_Paragraph = [
    data1 = 'abcdefg'
    data2 = '123556'
    data3 = 'supercalifragilistic'
    data4 = 'expealadocious'
    ....
    data106 = 'critical info'
    ....
]

这些日志里有很多诗节。。。都带有“data106”类型标识符。什么是最好的方式来抓取节的匹配“错误\段落”?抓取整个段落会很有用,但我特别在“Error\u paragraph”中只查找“data106”

我已经试过几次了,但似乎不能正确地吸收段落。真正好的办法是把这些都塞进字典里,这样我就可以根据需要查阅这些条目了。你知道吗

谢谢!你知道吗

当前尝试的示例:

import re
import gzip
import sys

f = gzip.open( sys.argv[1], 'rb')

dataDict = re.findall(r"Error_Paragraph = \[[^\]]*data106 = '([^']*)'", s)

print dataDict

我得到以下输出:

File "./logfile.txt", line 10
dataDict = re.findall(f"^\$Error_Paragraph = \[[^\]]*data106 = '([^']*)'", s)

Tags: 数据文本importre应用程序示例syserror
1条回答
网友
1楼 · 发布于 2024-09-30 16:32:14

假设这些节不包含[方括号],您可以搜索

Error_Paragraph = \[[^\]]*data106 = '([^']*)'

然后看匹配的.groups(1)re.findall()将自动为您执行以下操作:

>>> import re
>>> s = """Some_Paragraph = [
...     data1 = 'abcdefg'
...     data106 = 'uninteresting info'
... ]
...
... Error_Paragraph = [
...     data3 = 'supercalifragilistic'
...     data106 = 'critical info'
... ]
...
... Other_Paragraph = [
...     data4 = 'expealadocious'
...     data106 = 'boring info'
... ]"""
>>> re.findall(r"Error_Paragraph = \[[^\]]*data106 = '([^']*)'", s)
['critical info']

相关问题 更多 >