将日志中的值与regex匹配

2024-06-13 20:12:17 发布

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

我想匹配'ElemNum':13的'ReturnValue'(因为每次打开此字符串时都会发生变化)

我猜我需要拆分字符串,然后用一些正则表达式黑魔法提取它

这是一份它看起来的日志,基本上在你能看到的最后一行,我在19695年之后,但是这些数字将会改变

 {'ButtonTileArts': [],
 'CheckBoxes': [],
 'ChekerTrans': [],
 'CroppedText': [],
 'EndGroups': [],
 'GumpButtons': 
[{'ElemNum': 1, 'Page': 0, 'PageID': 0, 'PressedID': 22153, 'Quit': 1, 'ReleasedID': 22153, 'ReturnValue': 2488, 'X': 5, 'Y': 5},
 {'ElemNum': 2, 'Page': 0, 'PageID': 0, 'PressedID': 2435, 'Quit': 1, 'ReleasedID': 2435, 'ReturnValue': 18369, 'X': 30, 'Y': 9},
 {'ElemNum': 3, 'Page': 0, 'PageID': 0, 'PressedID': 2437, 'Quit': 1, 'ReleasedID': 2437, 'ReturnValue': 6405, 'X': 40, 'Y': 9},
 {'ElemNum': 4, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 15019, 'X': 120, 'Y': 5},
 {'ElemNum': 6, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 18606, 'X': 135, 'Y': 5},
 {'ElemNum': 8, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 13612, 'X': 150, 'Y': 5},
 {'ElemNum': 10, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 19094, 'X': 165, 'Y': 5},
 {'ElemNum': 12, 'Page': 0, 'PageID': 0, 'PressedID': 9701, 'Quit': 1, 'ReleasedID': 9700, 'ReturnValue': 9537, 'X': 80, 'Y': 7},
 {'ElemNum': 13, 'Page': 0, 'PageID': 0, 'PressedID': 9705, 'Quit': 1, 'ReleasedID': 9704, 'ReturnValue': 19695, 'X': 100, 'Y': 7},

等等,

{'ElemNum':13,'Page':0,'PageID':0,'pressedd':9705,'Quit':1,'ReleasedID':9704,'ReturnValue':19695,'X':100,'Y':7}


Tags: 字符串page数字quitreturnvaluecheckboxespageidchekertrans
1条回答
网友
1楼 · 发布于 2024-06-13 20:12:17

我认为这里不需要任何正则表达式魔术,因为我们可以通过在GumpButtons上迭代并查找其ElemNum等于13的dict来提取该值,然后打印其ReturnValue

x = {'ButtonTileArts': [],
 'CheckBoxes': [],
 'ChekerTrans': [],
 'CroppedText': [],
 'EndGroups': [],
 'GumpButtons': 
[{'ElemNum': 1, 'Page': 0, 'PageID': 0, 'PressedID': 22153, 'Quit': 1, 'ReleasedID': 22153, 'ReturnValue': 2488, 'X': 5, 'Y': 5},
 {'ElemNum': 2, 'Page': 0, 'PageID': 0, 'PressedID': 2435, 'Quit': 1, 'ReleasedID': 2435, 'ReturnValue': 18369, 'X': 30, 'Y': 9},
 {'ElemNum': 3, 'Page': 0, 'PageID': 0, 'PressedID': 2437, 'Quit': 1, 'ReleasedID': 2437, 'ReturnValue': 6405, 'X': 40, 'Y': 9},
 {'ElemNum': 4, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 15019, 'X': 120, 'Y': 5},
 {'ElemNum': 6, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 18606, 'X': 135, 'Y': 5},
 {'ElemNum': 8, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 13612, 'X': 150, 'Y': 5},
 {'ElemNum': 10, 'Page': 0, 'PageID': 0, 'PressedID': 1896, 'Quit': 1, 'ReleasedID': 1896, 'ReturnValue': 19094, 'X': 165, 'Y': 5},
 {'ElemNum': 12, 'Page': 0, 'PageID': 0, 'PressedID': 9701, 'Quit': 1, 'ReleasedID': 9700, 'ReturnValue': 9537, 'X': 80, 'Y': 7},
 {'ElemNum': 13, 'Page': 0, 'PageID': 0, 'PressedID': 9705, 'Quit': 1, 'ReleasedID': 9704, 'ReturnValue': 19695, 'X': 100, 'Y': 7}]}

for dicts in x['GumpButtons']:
    if dicts['ElemNum'] == 13:
        print(dicts['ReturnValue']) # -> 19695

或者,如果您的数据存储在文件中,您可以使用^{}加载它,如下所示:

file = open('text_log.txt', 'r')
x = eval(''.join(file.read().splitlines()))
file.close()

相关问题 更多 >