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

相关推荐
cooldream20091 小时前
Python 包管理新时代:深入了解 `uv` 的使用与实践
python·uv·包管理器
之歆1 小时前
Python-魔术方法-创建、初始化与销毁-hash-bool-可视化-运算符重载-容器和大小-可调用对象-上下文管理-反射-描述器-二分-学习笔记
笔记·python·学习
胖达不服输2 小时前
「日拱一码」025 机器学习——评价指标
人工智能·python·机器学习·评价指标
brave_zhao3 小时前
JavaBeanUtils javaBean转map, 实体类转map,实体集合转List<Map>
linux·windows·python
apihz4 小时前
通用图片搜索-搜狗源免费API接口使用指南
android·java·python·php·音视频
爱吃面条的猿4 小时前
pycharm中自动补全方法返回变量
ide·python·pycharm
倔强青铜三4 小时前
苦练Python第15天:Lambda函数——Python的匿名一行杀器
人工智能·python·面试
云空4 小时前
《QtPy:Python与Qt的完美桥梁》
开发语言·python·qt·pyqt
Hi_kenyon4 小时前
UV的使用总结
python·uv
暴走的海鸽4 小时前
存储库模式赋能 Django:让你的代码不那么业余,更具生命力
python·设计模式·django