首页 > 解决方案 > 我能够逐行阅读 txt,不确定现在如何搜索并用 X 替换特定字符串

问题描述

我目前正在尝试开发一个 python 脚本来清理配置。我的目标是从 txt 中逐行读取,我可以使用以下代码

fh = open('test.txt')
for line in fh:
    print(line)
fh.close()

输出如下

hostname
198.168.1.1
198.168.1.2
snmp string abck

现在我想

  1. 搜索匹配“主机名”的字符串替换为 X
  2. 使用正则表达式搜索 ipv4 地址 \b(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(?1)){3}\b and replace with X.X\1 (replacing only first two octets with X)
  3. “snmp 字符串”之后的所有内容都需要替换为 X

所以我正在寻找的文件最终输出是

X
x.x.1.1
x.x.1.2
snmp string x

我无法将所有事情都安排在一起。任何帮助或指导将不胜感激。

标签: python

解决方案


有很多方法可以解决这个问题,但这里有一个:不仅仅是打印文件的每一行,而是将每一行存储在一个列表中:

with open("test.txt") as fh:
   contents = []
   for line in fh:
      contents.append(line)

print(contents)

现在您可以遍历该列表以执行您的正则表达式操作。我不会为您编写该代码,但您可以使用 python 的内置正则表达式库


推荐阅读