Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencari Kejadian Ke-N String dalam Python?

Bagaimana untuk Mencari Kejadian Ke-N String dalam Python?

DDD
DDDasal
2024-10-20 07:30:29626semak imbas

How to Find the Nth Occurrence of a String in Python?

Mencari Kejadian Nth String dalam Python

Mengenal pasti indeks kejadian n' substring dalam rentetan ialah tugas biasa dalam pengaturcaraan. Walau bagaimanapun, kaedah carian terbina dalam Python tidak menyediakan cara yang mudah untuk menentukan nombor kejadian.

Penyelesaian:

Daripada bergantung pada kaedah carian secara langsung, berikut ialah penyelesaian Pythonic yang secara berulang mengesan subrentetan dan menambah bilangan kejadian sehingga mencapai nilai yang dikehendaki:

<code class="python">def find_nth(haystack: str, needle: str, n: int) -> int:
    """Find the index of the nth occurrence of needle in haystack."""
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+len(needle))
        n -= 1
    return start</code>

Penggunaan:

Untuk mencari indeks bagi kejadian kedua subrentetan "foofoo" dalam rentetan "foofoofoofoo", anda akan memanggil:

<code class="python">find_nth("foofoofoofoo", "foofoo", 2)</code>

Ini akan mengembalikan indeks 6, sepadan dengan kedudukan permulaan subrentetan "foofoo" kedua.

Pertimbangan untuk Kejadian Bertindih:

Jika anda perlu mencari indeks kejadian bertindih ke-n bagi subrentetan, anda boleh mengubah suai fungsi find_nth untuk menambah kedudukan permulaan dengan 1 bukannya panjang jarum:

<code class="python">def find_nth_overlapping(haystack, needle, n):
    """Find the index of the nth overlapping occurrence of needle in haystack."""
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+1)
        n -= 1
    return start</code>

Atas ialah kandungan terperinci Bagaimana untuk Mencari Kejadian Ke-N String dalam Python?. 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