首頁 > 後端開發 > Python教學 > 如何在 Python 中有效地檢查大型文字檔案中是否存在字串?

如何在 Python 中有效地檢查大型文字檔案中是否存在字串?

DDD
發布: 2024-12-12 12:45:11
原創
877 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板