Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Carian Rentetan Saya Sentiasa Kembali Benar?

Mengapa Fungsi Carian Rentetan Saya Sentiasa Kembali Benar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-14 12:09:12842semak imbas

Why Does My String Search Function Always Return True?

Mencari Rentetan dalam Fail Teks

Berusaha untuk mengesan kehadiran rentetan tertentu dalam fail teks, anda telah terjumpa isu di mana kod secara tidak dijangka mengembalikan True tanpa mengira kewujudan rentetan. Mari kita siasat kod dan betulkan isu:

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"

Nama pembolehubah blabla mencadangkan bahawa terdapat rentetan yang anda cuba cari, tetapi ia tidak ditakrifkan dalam kod. Ini berkemungkinan punca isu di mana kod sentiasa mengembalikan True. Pastikan anda mentakrifkan blabla dengan rentetan yang sesuai yang anda cari sebelum menjalankan fungsi check().

Pendekatan Alternatif menggunakan fail dibaca:

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

Ini kaedah membaca keseluruhan fail ke dalam ingatan, membolehkan carian terus untuk rentetan. Walau bagaimanapun, perlu diingat bahawa pendekatan ini mungkin tidak sesuai untuk fail besar kerana had memori.

Pendekatan 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 membenarkan mencipta memori- perwakilan fail dipetakan, dengan berkesan mencipta objek "seperti rentetan" yang menggunakan fail asas tanpa membaca keseluruhan fail ke dalam memori, mengurangkan penggunaan memori.

Atas ialah kandungan terperinci Mengapa Fungsi Carian Rentetan Saya Sentiasa Kembali Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn