尝试基于python中的重新匹配对括号中的数据进行全局化

尝试基于python中的重新匹配对括号中的数据进行全局化,python,regex,Python,Regex,我试图使用python根据匹配的文本从应用程序日志中获取数据节。伪示例如下所示: Error_Paragraph = [ data1 = 'abcdefg' data2 = '123556' data3 = 'supercalifragilistic' data4 = 'expealadocious' .... data106 = 'critical info' .... ] 这些日志中有许多诗节。。。都带有“data106”类型标识符。

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

Error_Paragraph = [
    data1 = 'abcdefg'
    data2 = '123556'
    data3 = 'supercalifragilistic'
    data4 = 'expealadocious'
    ....
    data106 = 'critical info'
    ....
]
这些日志中有许多诗节。。。都带有“data106”类型标识符。哪种最好的方法可以只抓住与“错误段落”匹配的段落?抓取整个段落会很有用,但我在“Error_段落”中只查找“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)

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

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']

@Tim Pietzker-感谢您的回复。由于日志文件的当前大小,我正在从另一个文件中读取它们。我已经修改了我的尝试并将其粘贴到原始帖子中。。。删除您的建议:我的解决方案假设文件内容已被读入
s
。在使用正则表达式之前,您需要这样做,因为它们只处理字符串,而不处理文件。
findall
被记录为返回组或
tuple
s(其中
tuple
s将包含多个组)的列表。输出看起来可能是某种错误。这就是确切的输出;没有别的了?什么是
s
?您的代码使用它,但它没有在共享的代码中的任何地方定义。此外,文本是否可以包含方括号(
[]
)?输出看起来像是错误回溯的一部分。请发布完整的回溯。在搜索之前,你需要解压、提取和读取文件。