在文字檔案中搜尋字串
為了偵測文字檔案中是否存在特定字串,您偶然發現了一個無論字串是否存在,程式碼都會意外回傳True 的問題。讓我們研究一下程式碼並修正問題:
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break check() if True: print "true" else: print "false"
變數名稱 blabla 表示您正在嘗試尋找字串,但它未在程式碼中定義。這可能是程式碼始終傳回 True 的問題根源。確保在運行 check() 函數之前使用要搜尋的適當字串定義 blabla。
使用檔案讀取的替代方法:
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
This方法將整個檔案讀入內存,從而可以直接搜尋字串。但是,請記住,由於記憶體限制,此方法可能不適合大檔案。
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')
mmap 允許建立記憶體-檔案的對應表示,有效地建立一個「類似字串」的對象,該物件使用底層文件,而無需將整個文件讀入內存,從而減少內存使用。
以上是為什麼我的字串搜尋函數總是傳回 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!