0

次のコード ブロックに問題があります。私がやろうとしているのは、ファイルを1行ずつ調べて、「.W」を含む行に続く行を「.I」で始まる行に到達するまで引き出すことです

with open("cran.all.1400","r") as abstracts:
abstract_list = []
for line in abstracts:
    if (line.startswith(".W")):
        abstract_string = ""
        while not (line.startswith('.I')):
            abstract_string = abstract_string + line
            abstracts.next()
        abstract_list.append(abstract_string)

に遭遇しましたが、 が値を持たないStopIterationときにこれが発生することがいくつかのグーグルで示されましたが、その場合に.next()このコードをどのように記述すればよいかわかりません。

私が具体的に確信していないのは、whileループが行を通過し続ける方法とfor、ループが中断したところからwhileループが再開される方法です。

4

1 に答える 1

1

for ループでフラグを使用します。

with open("cran.all.1400") as abstracts:
    inside = False
    abstract_list = []
    for line in abstracts:
        if line.startswith(".W"):
            inside = True
            abstract_list.append("")
        elif line.startswith(".I"):
            inside = False
        elif inside:
            abstract_list[-1] += line
于 2016-03-17T18:26:10.623 に答える