首頁 > 後端開發 > Python教學 > 為什麼我在文字檔案中的 Python 字串搜尋總是返回 True?

為什麼我在文字檔案中的 Python 字串搜尋總是返回 True?

Susan Sarandon
發布: 2024-12-22 02:14:21
原創
885 人瀏覽過

Why Does My Python String Search in a Text File Always Return True?

在文字檔案中搜尋字串

問題:
嘗試確定特定字串是否存在於文字檔案中使用特定函數的文字檔案始終返回True,無論字串的值如何

代碼:

def check():
    datafile = file('example.txt')
    found = False
    for line in datafile:
        if blabla in line:
            found = True
            break
登入後複製

診斷和解決方案:

提供的程式碼循環遍歷文字檔案並逐行檢查以查找是否存在特定字串“blabla”。然而,問題在於blabla是否符合條件。在 Python 中,在檢查成員身份時,這表示如果字串位於行中的任何位置,則傳回 True。

為了緩解此問題,可以考慮不同的方法:

選項1:在文件內容中直接進行字串搜尋

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")
登入後複製

此方法將整個檔案內容讀取到字串中,然後檢查該字串是否存在。如果檔案不是太大,此方法通常比遍歷每一行更快更方便。

選項2:使用記憶體映射實現高效檔案存取

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:使用正規表示式進行不區分大小寫的搜尋

if re.search(br'(?i)blabla', s):
    print('true')
登入後複製

此方法採用正規表示式在記憶體映射中執行不區分大小寫的搜尋檔案。語法 (?i)blabla 使搜尋忽略大小寫差異。

以上是為什麼我在文字檔案中的 Python 字串搜尋總是返回 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板