首页 > 后端开发 > Python教程 > 如何在 Python 中有效地检查大型文本文件中是否存在字符串?

如何在 Python 中有效地检查大型文本文件中是否存在字符串?

DDD
发布: 2024-12-12 12:45:11
原创
875 人浏览过

How Can I Efficiently Check for a String's Presence in Large Text Files in Python?

检查文本文件的字符串包含性

考虑一个场景,您试图确定文本文件中是否存在特定字符串。一旦识别,应执行特定操作(X);否则,应执行替代操作 (Y)。然而,旨在实现此目标的代码片段始终返回 True,这让您对其准确性感到困惑。

导致此错误行为的罪魁祸首是 if 语句中缺少条件检查。正确的实现应该如下所示:

if 'blabla' in line:
登录后复制

但是,如果您的文本文件相对较大,则将整个文件读入字符串并使用它执行搜索可能会更有效。这是一个示例:

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")
登录后复制

对于更大的文件,您可以利用 mmap.mmap() 创建一个使用底层文件的“类似字符串”的对象,而不是将整个内容加载到内存中。

import mmap

with open('example.txt') as f:
    s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    if s.find('blabla') != -1:
        print('true')
登录后复制

在 Python 3 中,值得注意的是 mmap 类似于 bytearray 对象,需要将搜索字符串修改为 bytes object:

import mmap

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if s.find(b'blabla') != -1:
        print('true')
登录后复制

此外,您可以在 mmap 上使用正则表达式来实现更高级的搜索功能,例如不区分大小写的匹配:

import mmap
import re

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if re.search(br'(?i)blabla', s):
        print('true')
登录后复制

以上是如何在 Python 中有效地检查大型文本文件中是否存在字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板