python - 我能够逐行阅读 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
现在我想
- 搜索匹配“主机名”的字符串替换为 X
- 使用正则表达式搜索 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)
- “snmp 字符串”之后的所有内容都需要替换为 X
所以我正在寻找的文件最终输出是
X
x.x.1.1
x.x.1.2
snmp string x
我无法将所有事情都安排在一起。任何帮助或指导将不胜感激。
解决方案
有很多方法可以解决这个问题,但这里有一个:不仅仅是打印文件的每一行,而是将每一行存储在一个列表中:
with open("test.txt") as fh:
contents = []
for line in fh:
contents.append(line)
print(contents)
现在您可以遍历该列表以执行您的正则表达式操作。我不会为您编写该代码,但您可以使用 python 的内置正则表达式库。
推荐阅读
- class - 如何创建自动处理表的 Lua 方法
- python - 在python中从整个图像中检测表格部分
- keyboard-shortcuts - 使用 Karabiner-Elements 将应用程序键映射到插入符号位置的右键单击
- c - 在 C/C++ 中获取函数内部的函数地址?
- angular - Ace Editor 的 Brace 包装器中的自定义模式
- java - 更改 json 对象值
- html - 如何链接文件和文件夹,以便如果我删除一个,两个都被删除
- c++ - 如何检查无符号字符向量是否包含所有空字符
- python - 比较列表中的值是否大于 X
- java - 只有当 Pageable = unpaged 时,Hibernate 重复才会导致 Spring JPA 查询