Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Memeriksa Kehadiran Rentetan dengan Cekap dalam Fail Teks Besar dalam Python?

Bagaimanakah Saya Boleh Memeriksa Kehadiran Rentetan dengan Cekap dalam Fail Teks Besar dalam Python?

DDD
Lepaskan: 2024-12-12 12:45:11
asal
877 orang telah melayarinya

How Can I Efficiently Check for a String's Presence in Large Text Files in Python?

Memeriksa Fail Teks untuk Kerangkuman Rentetan

Pertimbangkan senario di mana anda ingin memastikan kehadiran rentetan tertentu dalam fail teks. Apabila ia dikenal pasti, tindakan tertentu (X) hendaklah dilaksanakan; jika tidak, tindakan ganti (Y) harus diikuti. Walau bagaimanapun, coretan kod yang bertujuan untuk mencapai objektif ini secara konsisten mengembalikan True, membingungkan anda tentang ketepatannya.

Pelaku yang bertanggungjawab terhadap kelakuan salah ini ialah ketiadaan semakan syarat dalam pernyataan if. Pelaksanaan yang betul hendaklah seperti berikut:

if 'blabla' in line:
Salin selepas log masuk

Walau bagaimanapun, jika fail teks anda agak besar, mungkin lebih cekap untuk membaca keseluruhan fail ke dalam rentetan dan melakukan carian menggunakan fail tersebut. Berikut ialah contoh:

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

Untuk fail yang lebih besar, anda boleh memanfaatkan mmap.mmap() untuk mencipta objek "seperti rentetan" yang menggunakan fail asas dan bukannya memuatkan keseluruhan kandungan ke dalam memori.

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

Dalam Python 3, perlu diperhatikan bahawa mmaps menyerupai objek bytearray, yang memerlukan pengubahsuaian carian rentetan kepada objek bait:

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

Selain itu, anda boleh menggunakan ungkapan biasa pada mmaps untuk keupayaan carian yang lebih maju, seperti padanan tidak peka huruf besar-kecil:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa Kehadiran Rentetan dengan Cekap dalam Fail Teks Besar dalam Python?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan