可能与正则表达式匹配日志中的值
Match a value in an log perhaps with regex
我想匹配 'ElemNum':13 的 'ReturnValue'(因为每次我打开这个字符串都会改变)
我猜我需要拆分字符串,然后用一些 Regex BlackMagic 提取它?
这是它看起来的日志,基本上在最后一行你可以看到我在 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, 'PressedID': 9705, 'Quit': 1, 'ReleasedID': 9704, 'ReturnValue': 19695, 'X': 100, 'Y': 7},
我认为这里不需要任何正则表达式魔术,因为我们可以通过遍历 GumpButtons
并查找 ElemNum
等于 13 的字典来简单地提取该值,然后打印其 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
或者如果您的数据存储在文件中,您可以使用 eval()
加载它,如下所示:
file = open('text_log.txt', 'r')
x = eval(''.join(file.read().splitlines()))
file.close()
我想匹配 'ElemNum':13 的 'ReturnValue'(因为每次我打开这个字符串都会改变)
我猜我需要拆分字符串,然后用一些 Regex BlackMagic 提取它?
这是它看起来的日志,基本上在最后一行你可以看到我在 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, 'PressedID': 9705, 'Quit': 1, 'ReleasedID': 9704, 'ReturnValue': 19695, 'X': 100, 'Y': 7},
我认为这里不需要任何正则表达式魔术,因为我们可以通过遍历 GumpButtons
并查找 ElemNum
等于 13 的字典来简单地提取该值,然后打印其 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
或者如果您的数据存储在文件中,您可以使用 eval()
加载它,如下所示:
file = open('text_log.txt', 'r')
x = eval(''.join(file.read().splitlines()))
file.close()