使用re.finditer(或其他函数)查找str并解析python中的以下数据

使用re.finditer(或其他函数)查找str并解析python中的以下数据,python,regex,Python,Regex,我正试图用Python3.4构建我的第一个程序,该程序旨在从WindowsXP中的setupapi.dev.log文件(一个以ASCII格式存储数据的基于文本的日志文件)中解析出具有法医学意义的数据 我目前正在使用re.finditer识别“VID”的位置,但需要指定我感兴趣的是以下5个字符 到目前为止,我的代码如下所示: import sys import re file_path = sys.argv[1] file_pointer = open(file_path) data = (f

我正试图用Python3.4构建我的第一个程序,该程序旨在从WindowsXP中的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
字符,您可以与组一起使用:

>>> s = '123VID foo 456VID bar '
>>> re.findall('VID(.{5})', s)
[' foo ', ' bar ']
从:

如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表

如果您想继续使用
finditer
,语法将稍微复杂一些,因为您必须手动提取组:

>>> [m.group(1) for m in re.finditer('VID(.{5})', s)]
[' foo ', ' bar ']

提供示例文本文件。在没有看到数据本身的情况下,不能说需要做什么。@SergeBallesta因为“(或其他函数)”。但是我添加了
finditer
版本nontheless。感谢您的回复,我们将尝试一下,看看结果如何!