如何用 Python 在文件中查找并打印所有包含指定字符串的行
发布时间 - 2026-01-11 00:00:00 点击率:次本文介绍如何使用 python 遍历文本文件,精准定位并打印所有包含目标字符串的行及其行号,避免常见索引错误,提升代码健壮性与可读性。
在处理日志、配置或结构化文本(如无线接口能力输出)时,常需检索特定关键词(如 "AP/VLAN")出现的所有位置。原始代码虽能匹配,但使用 lines.index(line) 存在严重隐患:当文件中存在重复行时,index() 总返回首次出现的索引,导致行号错乱;同时 .find() != -1 的写法不如 in 运算符简洁直观。
推荐采用以下优化方案:
findString = "AP/VLAN"
with open('interfaces.txt', 'r', encoding='utf-8') as f:
for line_num, line in enumerate(f, start=1):
if findS
tring in line:
print(f'String Found in Line Number: {line_num}')
print(f'Line Content: {line.rstrip()}')✅ 关键改进说明:
- 使用 enumerate(f, start=1) 直接按文件流逐行迭代,无需一次性读入全部内容(内存友好),且天然提供准确行号;
- line.rstrip() 替代 strip() 保留行首空格(如缩进的 * AP/VLAN),更忠实还原原始格式;
- 显式指定 encoding='utf-8' 避免中文或特殊字符环境下的解码异常;
- in 操作符语义清晰、性能优异,完全替代 .find() != -1。
⚠️ 注意事项:
- 若需忽略大小写匹配,可改为 if findString.lower() in line.lower():;
- 若需匹配完整单词(避免 "AP/VLAN" 误匹配 "XAP/VLANX"),建议使用正则:import re 后 if re.search(r'\bAP/VLAN\b', line):;
- 对超大文件,此流式读取方式仍保持高效;切勿用 readlines() 加载 GB 级文件到内存。
综上,正确遍历 + 准确索引 + 安全编码,是实现可靠文本搜索的基础。一行代码的调整,即可规避隐蔽 bug,让脚本真正“所见即所得”。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作企业,网站的banner和导航栏是指什么?
Laravel如何实现文件上传和存储?(本地与S3配置)
微信推文制作网站有哪些,怎么做微信推文,急?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
怎么用AI帮你设计一套个性化的手机App图标?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
网站建设整体流程解析,建站其实很容易!
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
如何获取免费开源的自助建站系统源码?
如何用狗爹虚拟主机快速搭建网站?
html如何与html链接_实现多个HTML页面互相链接【互相】
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
WordPress 子目录安装中正确处理脚本路径的完整指南
高端建站三要素:定制模板、企业官网与响应式设计优化
深入理解Android中的xmlns:tools属性
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
手机网站制作与建设方案,手机网站如何建设?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
,交易猫的商品怎么发布到网站上去?
Android利用动画实现背景逐渐变暗
javascript中对象的定义、使用以及对象和原型链操作小结
如何在VPS电脑上快速搭建网站?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Laravel如何使用模型观察者?(Observer代码示例)
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何快速搭建高效可靠的建站解决方案?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
微信小程序 配置文件详细介绍
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
如何在云服务器上快速搭建个人网站?
如何在服务器上配置二级域名建站?
浅述节点的创建及常见功能的实现
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
在线制作视频网站免费,都有哪些好的动漫网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Python制作简易注册登录系统
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
开心动漫网站制作软件下载,十分开心动画为何停播?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel如何处理异常和错误?(Handler示例)
Laravel如何实现一对一模型关联?(Eloquent示例)
javascript基本数据类型及类型检测常用方法小结


tring in line:
print(f'String Found in Line Number: {line_num}')
print(f'Line Content: {line.rstrip()}')