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次)

相关推荐
百锦再1 小时前
第18章 高级特征
android·java·开发语言·后端·python·rust·django
源码之家1 小时前
基于Python房价预测系统 数据分析 Flask框架 爬虫 随机森林回归预测模型、链家二手房 可视化大屏 大数据毕业设计(附源码)✅
大数据·爬虫·python·随机森林·数据分析·spark·flask
SalvoGao1 小时前
Python学习 | 怎么理解epoch?
数据结构·人工智能·python·深度学习·学习
楚疏笃2 小时前
纯Python 实现 Word 文档转换 Markdown
python·word
谅望者2 小时前
数据分析笔记08:Python编程基础-数据类型与变量
数据库·笔记·python·数据分析·概率论
mortimer2 小时前
【实战复盘】 PySide6 + PyTorch 偶发性“假死”?由多线程转多进程
pytorch·python·pyqt
清静诗意3 小时前
Django REST Framework(DRF)RESTful 最完整版实战教程
python·django·restful·drf
studytosky3 小时前
深度学习理论与实战:Pytorch基础入门
人工智能·pytorch·python·深度学习·机器学习
长不大的蜡笔小新3 小时前
手写数字识别:从零搭建神经网络
人工智能·python·tensorflow
前进的李工4 小时前
LeetCode hot100:094 二叉树的中序遍历:从递归到迭代的完整指南
python·算法·leetcode·链表·二叉树