gpt4 book ai didi

python - 删除包含特定字符串的行

转载 作者:行者123 更新时间:2023-11-28 19:58:11 26 4
gpt4 key购买 nike

我有一个脚本,我想用它从文件中删除包含特定 IP 地址的行。这是:

for line in fileinput.input(hostsFileLoc,inplace =1):
line = line.strip()
if not hostIP in line:
print line

但是,我正在努力解决两件事。

  1. 此脚本将删除所有匹配项,因此在示例之前

    127.0.0.1
    127.0.0.11
    127.0.0.111
    192.168.0.1

    如果我使用“127.0.0.11”的输入运行它,它将删除“127.0.0.11”和“127.0.0.111”,这不是我想要的。

  2. 此脚本也不处理 csv 文件。我需要将其从一个文件中删除,该文件的每一行都是 IP 地址,按照上面的列表,还有一个 csv 文件,其中第一个字段是有问题的 IP 地址。我尝试在 strip 函数中使用正则表达式 [\s\,]+ ,但这不能正常工作,并且在将剩余行重新打印回文件时添加一个空行。

我知道这可能有很多问题,但我仍在努力探索 Python 的神奇之处。

最佳答案

您只需要在测试中更加具体。对于第一个示例,测试整行(在 strip 之后)是否等于 ip 地址(比它包含的更严格 - 从而解决您的第一个问题)。对于第二个,在逗号字符上拆分每一行,并测试第一个元素是否等于您的 IP 地址字符串。

所以对于第一种文件类型:

for line in fileinput.input(hostsFileLoc,inplace =1):
line = line.strip()
if line != hostIP:
sys.stdout.write(line)

对于 csv 文件类型:

for line in fileinput.input(hostsFileLoc,inplace =1):
elements = line.split(",")
first = elements[0].strip()
if first != hostIP:
sys.stdout.write(line)

关于python - 删除包含特定字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com