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

相关推荐
一直都在572几秒前
JSoup:Java 处理 HTML 的实用利器,从基础到实战爬取教程
java·python·html
EnCi Zheng4 分钟前
P1B-Python环境配置基础完全指南-Windows系统安装与验证
开发语言·windows·python
小小怪7508 分钟前
实战:用Python开发一个简单的区块链
jvm·数据库·python
云和数据.ChenGuang11 分钟前
数据分析中的dataframe详解
python·数据挖掘·数据分析·django·pygame
echome88812 分钟前
Python 装饰器详解:从入门到实战
开发语言·python
罗罗攀19 分钟前
PyTorch学习笔记|张量的索引分片、合并和维度调整
人工智能·pytorch·笔记·python·学习
洛兮银儿22 分钟前
爬虫,如何查找一个网页的header请求头?
python
add45a29 分钟前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
Pyeako33 分钟前
大模型--OpenAI&创建阿里云百炼API Key
python·阿里云·大模型·云计算·openai·qwen·api key