1

OK みんな、簡単なことでまた立ち往生しました。
エントリごとに複数行のテキスト ファイルがあります。データは次の形式です。

最初の単語 単語 単語 単語 単語
単語 単語 単語興味深い1単語 単語 単語 単語 単語 単語 単語 単語
単語
単語 単語興味深い2単語 単語 単語 最後の単語

このシーケンスは 100 回ほど繰り返されますが、interesting1 とinteresting2 を除いて他のすべての単語は同じで、空白行はありません。興味深い2は興味深い1に関連していますが、他のものには関連していません.2つの興味深いアイテムを一緒にリンクし、次のような残りを破棄します

興味深い 1 = 興味深い
2 興味深い 1 = 興味深い
2 興味深い 1 = 興味深い
2 など、シーケンスごとに 1 行

各行は異なる単語で始まり
、ファイルを読み取り、「if wordx in line」ステートメントを実行して最初の興味深い行を特定し、値を切り取り、2 行目を見つけます (「if wordz in line」) を切り出します。それは
不器用ですが、私はグローバル変数、一時変数などを使用しなければなりませんでした.firstwordとlastwordの間の範囲を識別し、それを単一のリストに入れる方法があるはずです. 、次に両方の値を一緒にスライスします。

お時間をいただきありがとうございます。

4

3 に答える 3

0

データ レイアウトの規則性をチェックするために、一袋のアサーションを投入しました。

C:\SO>type words.py

# sample pseudo-file contents
guff = """\
firstword word word word
wordx word word word interesting1-1 word word word word
wordy word word word
wordz word word word interesting2-1 word word word lastword

miscellaneous rubbish

firstword word word word
wordx word word word interesting1-2 word word word word
wordy word word word
wordz word word word interesting2-2 word word word lastword
firstword word word word
wordx word word word interesting1-3 word word word word
wordy word word word
wordz word word word interesting2-3 word word word lastword

"""

# change the RHS of each of these to reflect reality
FIRSTWORD = 'firstword'
WORDX = 'wordx'
WORDY = 'wordy'
WORDZ = 'wordz'
LASTWORD = 'lastword'

from StringIO import StringIO
f = StringIO(guff)

while True:
    a = f.readline()
    if not a: break # end of file
    a = a.split()
    if not a: continue # empty line
    if a[0] != FIRSTWORD: continue # skip extraneous matter
    assert len(a) == 4
    b = f.readline().split(); assert len(b) == 9
    c = f.readline().split(); assert len(c) == 4
    d = f.readline().split(); assert len(d) == 9
    assert a[0] == FIRSTWORD
    assert b[0] == WORDX
    assert c[0] == WORDY
    assert d[0] == WORDZ
    assert d[-1] == LASTWORD
    print b[4], d[4]

C:\SO>\python26\python words.py
interesting1-1 interesting2-1
interesting1-2 interesting2-2
interesting1-3 interesting2-3

C:\SO>
于 2009-06-30T08:08:57.063 に答える