0

キーワード「バナナ」を含む特定の行を見つけた後、次の行、この場合は「ベリー」を削除したいと思います。

サンプル.txt

orange
apple
banana
berry
melon

しかし、私のスクリプトは「ベリー」ではなく「バナナ」を削除します....なぜですか?

import fileinput

filename = r"C:\sample.txt"
for linenum,line in enumerate(fileinput.FileInput(filename, inplace=1)):
    if "banana" in line:
        counter = linenum + 1
        if linenum == counter:
            line.strip()
    else:
        print line,
4

3 に答える 3

3

次のようにします。

import fileinput

fin = fileinput.input('/home/jon/text.txt', inplace=1)
for line in fin:
    print line,
    if line.strip() == 'banana':
        next(fin, None) # as suggested by @thg435 doesn't hurt to use default to avoid StopIteration (as next iteration will just be a no-op anyway)

finこれは、次の行が表示されないようにオブジェクトを反復処理することを利用します。つまり、フラグの設定/設定解除について心配する必要はありません... (エラーにつながる可能性があります)

于 2013-01-14T08:54:34.157 に答える
2

このようなもの:

flag = False
with open("C:\sample.txt") as in_f:
    for line in in_f:
        if flag: # previous line have "banana", so skip this line
            flag = False
            continue
        if "banana" in line: # set flag to skip line
            flag = True
        print line
于 2013-01-14T08:47:25.357 に答える
1

これを試してください

filename = r"sample.txt"
counter = -1
for linenum,line in enumerate(fileinput.FileInput(filename, inplace=1)):
    if "banana" in line:
        counter = linenum + 1
    if linenum == counter:
        line.strip()
    else:
        print line,
于 2013-01-14T08:54:34.750 に答える