使用 Python 在多行文本文件中查找包含特定关键词的行


使用 Python 在多行文本文件中查找包含特定关键词的行

本教程将指导您如何使用 python 高效地在多行文本文件中查找并提取包含特定关键词的行。通过文件i/o操作和简单的字符串匹配,我们将展示一种直接且易于理解的方法,无需复杂的内置函数即可实现精确的行内容搜索,适用于日志分析、数据过滤等多种场景。

在日常的编程任务中,我们经常需要处理文本文件,例如日志文件、配置文件或数据报告。其中一个常见的需求是从这些多行文本文件中找出包含特定关键词的行。虽然某些编程语言或工具可能提供高级的文本搜索功能,但对于 Python 而言,实现这一目标通常是通过一种直观且高效的迭代方式来完成。

理解文件读取与行迭代

Python 提供了一套强大的文件 I/O 机制。当我们打开一个文本文件并对其进行迭代时,Python 会逐行读取文件内容。这意味着我们可以轻松地对每一行执行操作,包括检查它是否包含我们感兴趣的关键词。

许多初学者可能会寻找一个类似于 variable.lineindex("desired_string") 的直接函数来定位包含特定字符串的行。然而,对于文件对象或多行字符串而言,并没有这样一个内置的、能够直接返回匹配行索引的通用函数。Python 的设计哲学鼓励通过迭代和条件判断来处理这类问题,这种方式既灵活又易于理解。

核心方法:逐行读取与字符串匹配

实现关键词查找的核心步骤如下:

  1. 打开文件: 使用 open() 函数以读取模式 ('r') 打开目标文本文件。
  2. 逐行迭代: 遍历文件对象,每次迭代都会得到文件中的一行内容。
  3. 关键词匹配: 对每一行使用 Python 的 in 运算符来检查它是否包含目标关键词。
  4. 处理匹配行: 如果一行包含关键词,则可以打印、存储或进一步处理该行。

示例代码

为了演示这一过程,我们假设有一个名为 text.txt 的文件,其内容如下:

NoCode NoCode

美团推出的零代码应用生成平台

NoCode 180 查看详情 NoCode
Hello, World!
MrBeast is rich.
:3 *g valorant player

我们的目标是找出并打印包含关键词 "World" 的行。

import os

# 1. 准备示例文件 (如果文件不存在,则创建它)
file_content = """Hello, World!
MrBeast is rich.
:3 *g valorant player
"""
file_name = "text.txt"
with open(file_name, 'w', encoding='utf-8') as f:
    f.write(file_content)

# 2. 定义文件路径和要查找的关键词
# 推荐使用相对路径,或者确保绝对路径正确
filepath = file_name
keyword_to_find = "World"

print(f"正在文件 '{filepath}' 中查找包含关键词 '{keyword_to_find}' 的行...
")

# 3. 打开文件并逐行查找
try:
    with open(filepath, 'r', encoding='utf-8') as file_object:
        found_matches = False
        for line_num, line in enumerate(file_object, 1): # enumerate 可以获取行号
            if keyword_to_find in line:
                print(f"第 {line_num} 行发现匹配: {line.strip()}")
                found_matches = True

        if not found_matches:
            print(f"文件中未找到包含关键词 '{keyword_to_find}' 的行。")

except FileNotFoundError:
    print(f"错误: 文件 '{filepath}' 未找到。请检查文件路径是否正确。")
except Exception as e:
    print(f"发生未知错误: {e}")

# 可选:清理示例文件
# os.remove(file_name)

代码解析:

  • with open(filepath, 'r', encoding='utf-8') as file_object::这是打开文件的推荐方式。with 语句确保文件在使用完毕后会被正确关闭,即使发生错误。'r' 表示读取模式,encoding='utf-8' 指定了文件的编码,以避免中文等字符乱码问题。
  • for line_num, line in enumerate(file_object, 1)::循环遍历文件对象。enumerate 函数用于同时获取行号(从1开始计数)和行内容。
  • if keyword_to_find in line::这是核心的字符串匹配部分。in 运算符会检查 keyword_to_find 是否作为子字符串存在于当前的 line 中。
  • print(f"第 {line_num} 行发现匹配: {line.strip()}"):如果找到匹配,我们打印出该行。line.strip() 用于移除行末可能存在的换行符 ( ) 和其他空白字符,使输出更整洁。

注意事项与进阶

  1. 文件路径:
    • 相对路径: 如果文件位于与 Python 脚本相同的目录下,可以直接使用文件名(例如 filepath = "text.txt")。
    • 绝对路径: 如果文件在其他位置,需要提供完整路径。在 Windows 系统中,路径分隔符是反斜杠 。由于反斜杠在 Python 字符串中是转义字符,您需要使用双反斜杠 \ (例如 C:\Users\JohnDee\Desktop\text.txt) 或使用原始字符串 r"C:UsersJohnDeeDesktop ext.txt"。在 Linux/macOS 系统中,路径分隔符是正斜杠 / (例如 /home/user/documents/text.txt)。
  2. 错误处理: 务必使用 try-except 块来处理 FileNotFoundError 等可能的文件操作异常,提高程序的健壮性。
  3. 大小写敏感性: 默认情况下,in 运算符是大小写敏感的。如果需要进行大小写不敏感的匹配,可以将行和关键词都转换为小写(或大写)再进行比较,例如:if keyword_to_find.lower() in line.lower():。
  4. 多个匹配项: 如果需要收集所有匹配的行,可以将它们添加到一个列表中:
    matching_lines = []
    with open(filepath, 'r', encoding='utf-8') as file_object:
        for line in file_object:
            if keyword_to_find in line:
                matching_lines.append(line.strip())
    print("
    所有匹配的行:")
    for m_line in matching_lines:
        print(m_line)
  5. 正则表达式: 对于更复杂的模式匹配(例如,查找以特定字符开头、以特定字符结尾的词,或者匹配多个关键词中的任意一个),可以使用 Python 的 re 模块进行正则表达式匹配。

总结

在 Python 中查找文本文件中包含特定关键词的行是一个基础但非常实用的技能。通过简单地打开文件、逐行迭代并使用 in 运算符进行字符串匹配,我们可以在不依赖复杂外部库的情况下,高效且灵活地完成这项任务。理解文件 I/O 的基本原理和字符串操作是掌握这一技能的关键。结合适当的错误处理和对路径、大小写等细节的考虑,您可以构建出强大而可靠的文本处理脚本。

以上就是使用 Python 在多行文本文件中查找包含特定关键词的行的详细内容,更多请关注其它相关文章!


# word  # linux  # macos  # mac  # 工具  # 编程语言  # app  # 编码  # windows  # 正则表达式  # python  # 网站的seo  # 靠谱SEO优化服务  # 摸鱼网站建设工作推荐  # 盖州网站建设和推广  # 福州网站建设推广专家  # 宝坻区网站推广方式  # 网站推广流量怎样增多  # 驻马店网站建设技术  # 新民常规网站建设  # 新思考网站建设论文题目  # 多个  # 这一  # 这是  # 文本文件  # 行号  # 运算符  # 迭代  # 关键词  # win 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: WooCommerce 新客户订单自动添加管理员备注教程  Scipy Sparse CSR 矩阵非零元素行级遍历的最佳实践  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  《优志愿》修改手机号方法  抖音视频如何添加标题?添加标题有哪些好处?  《下一站江湖2》大雪山加入方法  如何查找哪个composer包引入了特定的依赖?  金牛福袋获取攻略  手机雨课堂网页版入口免登录 雨课堂网页版可点击直接进入  Golang如何初始化module项目_Golang module init使用说明  暴风影音官网正式版_暴风影音手机版官网下载安卓  铁路12306座位怎么选_12306官方选座操作方法  使用 J*aScript 随机化 CSS Grid 布局中的元素顺序  《撕歌》会员开通方法  掌握产品代码正则表达式:避免常见陷阱与精确匹配  使用TinyButStrong生成HTML并结合Dompdf创建PDF教程  苹果手机怎么合并照片_苹果手机合并多张照片的操作方法  Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问  J*aScript类型数组_TypedArray使用  如何在mysql中比较InnoDB和MyISAM区别  Go App Engine 项目结构与包管理深度指南  微博网页版入口链接 微博网页版在线互动平台  c++20的指定初始化(Designated Initializers)怎么用_c++ C风格结构体初始化  TikTok网页版实时观看入口 TikTok网页版短视频在线浏览  B站怎么快速升级 B站用户等级提升攻略【详解】  惠普电脑BIOS界面看不懂怎么办_HP电脑BIOS功能选项解读与设置  键盘声音异常怎么回事_键盘异响怎么处理  原子笔记app误删找回教程  火狐浏览器无法自动更新怎么办 手动更新火狐浏览器到最新版本【解决】  mysql如何限制远程访问_mysql远程访问限制方法  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  六级准考证号怎么查_四六级准考证查询入口官网  Go语言反射机制下访问嵌入结构体中的被遮蔽方法  Python定时发送QQ消息  Windows自带的便笺数据如何备份_防止数据丢失的便利贴迁移教程【干货】  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  MacBook Pro词典使用指南  PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略  实现二叉树的层序插入:基于树大小的路径导航  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  J*aScript与HTML元素交互:图片点击事件与链接处理教程  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  顺丰快递收费标准查询_如何查看顺丰最新收费价格  漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接  蜻蜓FM如何设置移动流量播放  解决CSS布局中意外顶部空白问题的教程  跨语言测试实践:使用Python Selenium测试现有J*a Web项目  《小宇宙》标记不友善评论方法 

 2025-11-24

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.