我正在尝试在 Python 3.4 中构建我的第一个程序,旨在从 Windows XP 中的 setupapi.dev.log 文件(一个基于文本的日志文件,以 ASCII 格式存储数据)中解析出有趣的取证数据。
我目前正在使用 re.finditer
来识别“VID”的位置,但需要指定它是我感兴趣的以下 5 个字符。
到目前为止,我的代码看起来像这样:
import sys
import re
file_path = sys.argv[1]
file_pointer = open(file_path)
data = (file_pointer.read()
find_vid="VID"
v = re.finditer(find_vid, data)
for each in v:
print('%02d-%02d: %s' % (each.start(), each.end(), each.group()))
结果:
188275-188278: VID
188785-188788: VID
...
有没有办法使用这个函数来解析文本文件中 VID 后面的文本?
最佳答案
为了获得模式后的 5
个字符,您可以将 re.findall
与组一起使用:
>>> s = '123VID foo 456VID bar '
>>> re.findall('VID(.{5})', s)
[' foo ', ' bar ']
来自 docs :
If one or more groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group.
如果你想坚持使用 finditer
,语法会稍微复杂一些,因为你必须手动提取组:
>>> [m.group(1) for m in re.finditer('VID(.{5})', s)]
[' foo ', ' bar ']
关于python - 使用 re.finditer(或其他函数)查找 str 并在 python 中解析出以下数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979116/