0

我正在尝试使用 python 从基于匹配文本的应用程序日志中获取数据节。一个伪示例看起来像这样:

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

这些日志中有很多节......都带有“data106”类型标识符。仅获取与“Error_Paragraph”匹配的节的最佳方法是什么?抓住整个段落会很有用,但我专门在“Error_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)
4

1 回答 1

1

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

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']
于 2013-08-01T21:51:48.693 回答