我试图在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后面的文本?
答案 0 :(得分:1)
为了在模式后获得5
个字符,您可以将re.findall
与一个组一起使用:
>>> s = '123VID foo 456VID bar '
>>> re.findall('VID(.{5})', s)
[' foo ', ' bar ']
来自docs:
如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。
如果你想坚持finditer
,语法会稍微复杂一些,因为你必须手动提取组:
>>> [m.group(1) for m in re.finditer('VID(.{5})', s)]
[' foo ', ' bar ']