【发布时间】:2012-03-28 23:00:30
【问题描述】:
我有一个文本文件,我想在其中使用正则表达式匹配单词 PATTERN 并提取 START 和 END 之间的文本(文本文件如下所示)。我不想直接匹配START 和END 字段,因为我在该部分中有随机数据,但PATTERN 保持不变,因此我可以轻松匹配它。我有一个可以匹配模式的快速而肮脏的 Python 脚本,但我被困在下一步。
HERE IS MY PATTERN:
IGNORE SECTION
**************************************************
START 1 2 3 4 5
. . . . . .
. . . . . .
. . . . . .
END . . . . .
TEXT FILE CONTINUES...........
.
.
.
.
**************************************************
我如何告诉 Python 读取模式下方的 5 行,并在读取第一个空行时停止?
这是我的脚本:
#!usr/bin/env python
import re
pattern = r'PATTERN:'+'$'
count = 0
fp = open('fileinput.txt')
for line in fp:
count += 1
match = re.search(pattern,line)
if match:
print 'Matched text:', line, 'Line', count
line_match = count
new_line = line_match+4
我已经标记了我想要的行,但无法告诉 Python 从此时开始读取文件,并在遇到空行时退出。有什么建议吗?
【问题讨论】:
-
nt变量在那里没用。 -
在提取您想要的数据之前,您是否必须阅读整个文件?似乎解决方案可能是在
line_match = count和break之后立即跳出循环。 -
@ChrisP 我需要至少读取整个文件一次才能匹配正则表达式,对吧?一旦我得到一个匹配,我想去下面的 5 行并继续阅读直到 NEXT 空行。所以在这种情况下,我应该得到
START和END之间的文本 -
为什么不从击球开始算起?