檢查文字檔案的字串包含性
考慮一個場景,您試圖確定文字檔案中是否存在特定字串。一旦識別,應執行特定操作(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中文網其他相關文章!