python查找内容在文件中的第几行(利用了滑动窗口)

python 复制代码
    def find_multiline_content(file_path, multiline_content):
        with open(file_path, 'r') as file:
            # 文件内容
            file_lines = file.readlines()
        # 待检测内容
        multiline_lines = multiline_content.strip().split('\n')
        # 待检测内容总行数
        num_multiline_lines = len(multiline_lines)
        matching_lines = []
        for i in range(len(file_lines) - num_multiline_lines + 1):
            window = file_lines[i:i + num_multiline_lines]
            # all() 函数接受一个可迭代对象作为参数,仅当可迭代对象中的所有项的计算结果为 True,或可迭代对象为空时才返回 True。在所有其他情况下,all() 函数返回 False
            if all(multiline_lines[j].strip() == window[j].strip() for j in range(num_multiline_lines)):
                matching_lines.append(i + 1)
        return matching_lines

window为一个滑动窗口,可以滑动的次数为【文件总行数 - 内容的行数】:

例如文件总共为10行,而内容行数为5行,那么滑动的次数为5次(for i in range(len(file_lines) - num_multiline_lines + 1)的i即为滑动次数)。

我们可以看到①号,从1开始,可以从数字2(滑动1次),滑到数字6(滑动5次)

相关推荐
Tipriest_几秒前
Python构建包,打包.whl文件,使用.whl文件安装包指南
python·whl
BoBoZz197 分钟前
ColorEdges 动态有向图的动态渲染
python·vtk·图形渲染·图形处理
彼岸花开了吗24 分钟前
构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
人工智能·python·llm
echo的PHP开发28 分钟前
如何获取苹果手机的 XcodeOrgId
python·智能手机·苹果手机
程序员杰哥32 分钟前
Postman设置接口关联,实现参数化
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
沛沛老爹38 分钟前
2025年java总结:缝缝补补又一年?
java·开发语言·人工智能·python·guava·总结·web转型ai
威风的虫41 分钟前
LlamaIndex中的文档处理核心模块
python
white-persist1 小时前
【内网运维】Netsh 全体系 + Windows 系统专属命令行指令大全
运维·数据结构·windows·python·算法·安全·正则表达式
馬致远1 小时前
Flask - MySQL 蓝图风格小项目搭建
python·mysql·flask
啃火龙果的兔子1 小时前
Pygame开发游戏流程详解
python·游戏·pygame