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
Lepaskan: 2024-12-14 12:09:12
asal
839 orang telah melayarinya

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"
Salin selepas log masuk

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")
Salin selepas log masuk

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')
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan