如何使用Python识别文本中的IP地址并在同行追加指定子网掩码
可行实现方案
核心逻辑说明
- 先全量读取文件所有行,避免边读边写导致的文件内容异常
- 用
re.sub()方法直接对行内匹配到的IPv4地址做替换,自动在IP后追加子网掩码,无需手动判断匹配结果 - 所有行处理完成后统一写回原文件
原代码问题排查
- 第二次打开文件使用只读模式
r,无写入权限,且文件对象没有append()方法 re.match()从行首开始匹配规则,你的IP在host字段之后,无法匹配成功- 直接对原文件做增量写入容易导致内容错乱,建议全量处理后再覆写
可直接运行代码
import re # 读取源文件所有内容 with open("test.txt", "r", encoding="utf-8") as f: content = f.readlines() processed = [] # 匹配IPv4的正则,如需严格校验合法IP可替换为更严谨的规则 ip_reg = r"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" for line in content: # 匹配到IP则在后方追加子网掩码,未匹配则返回原行 new_line = re.sub(ip_reg, r"\1 255.255.255.255", line) processed.append(new_line) # 处理完成后写回原文件 with open("test.txt", "w", encoding="utf-8") as f: f.writelines(processed)
可选优化:严格匹配合法IPv4
如果需要避免匹配到999.999.999.999这类非法IP,可将正则规则替换为:r"((?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
内容的提问来源于stack exchange,提问作者point
相关产品推荐
相关产品推荐

