簡體   English   中英

如何在Python中刪除具有特定關鍵字的行后的后續行

[英]How to Delete Subsequent Line After A Line With Specific Keyword in Python

找到帶有關鍵字“ banana”的特定行后,我想刪除下一行,在這種情況下為“ berry”。

Sample.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,

像這樣做:

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對象的迭代,因此它不會看到下一行-這意味着您不必擔心設置/取消設置標志...(這可能會導致錯誤)

像這樣:

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

請嘗試這個

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,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM