正規表現を使用して単語PATTERN
と一致させたいテキストファイルがあり、START
とEND
の間のテキスト(以下に示すテキストファイル)を抽出します。私はその部分にランダムなデータがあるので、START
とEND
のフィールドを直接一致させたくないですが、PATTERN
は変わりませんので、簡単に一致させることができます。私は、パターンに一致することができる素早く汚れたPythonスクリプトを持っていますが、私は次のステップで立ち往生しています。最初の空行で読むときPythonのテキストファイルから正規表現を含むファイルのスニペットを読み取る
HERE IS MY PATTERN:
IGNORE SECTION
**************************************************
START 1 2 3 4 5
. . . . . .
. . . . . .
. . . . . .
END . . . . .
TEXT FILE CONTINUES...........
.
.
.
.
**************************************************
は、どのように私は5本のラインパターン下の行に読んへのPythonを伝え、そしてSTOPていますか?ここで
は私のスクリプトです:
#!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'変数は無駄です。 – rubik
必要なデータを抽出する前にファイル全体を読み取る必要がありますか?解決策は、 'line_match = count'の直後に' break'を使ってループから抜けることが考えられます。 – ChrisP
@ChrisP正規表現にマッチする前に、ファイル全体を少なくとも一度は読む必要がありますか?試合が終わると、私は5行下に行き、NEXTの空行まで読み続けます。だからこの場合は、「START」と「END」の間にテキストを入れてください。 – prrao