我必须删除文本文件中的特定行

时间:2018-11-08 10:52:13

标签: python

我的查询是我必须在文件中搜索IP地址,然后删除包含该IP地址的行以及该行上方和下方的行。我是python的新手,我在Google上搜索了很多解决方案,但无法获得输出。 请帮助我编写正确的代码。 我尝试使用此代码,但失败了

def delete(ip_address):
 to_be_removed_ip = ip_address
with open(alias_file) as myFile:
lines = myFile.readlines()
    for num, line in enumerate(myFile,1):
        if to_be_removed_ip in line:     
            del line[num]
            del line[num-1]
            del line[num+1]

这是示例文本文件

eniq_oss_1]
eniq ip address = ['10.149.21.136']
last updated = 2018-10-23 03:00:53

[events_oss_1]
eniq ip address = ['10.149.21.144']
last updated = 2018-10-23 03:00:28

谢谢。!

1 个答案:

答案 0 :(得分:0)

在遍历对象时操纵对象绝不是一个好主意。尝试创建另一个具有相同内容的对象,然后从该对象中删除条目。最后,您可以将第二个替换为第一个,然后完成。

lines = myFile.readlines()
    for num, line in enumerate(lines):
        if to_be_removed_ip in line:     
            lines[num] = ""
            lines[num-1] = ""
            lines[num+1] = ""

现在我们可以将lines写入文件,并且您的文件已更改。

with open(alias_file,'w') as myFile:
    myFile.writelines(lines)