"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية العثور على التواجد التاسع لسلسلة فرعية في سلسلة في بيثون؟

كيفية العثور على التواجد التاسع لسلسلة فرعية في سلسلة في بيثون؟

تم النشر بتاريخ 2024-11-06
تصفح:475

How to Find the nth Occurrence of a Substring in a String in Python?

العثور على التكرار n لسلسلة فرعية في سلسلة

تحديد الفهرس المطابق للتكرار n لسلسلة فرعية هو وهي مهمة تنشأ غالبًا في سيناريوهات البرمجة المختلفة. في بايثون، لا توجد وظيفة مدمجة مصممة خصيصًا لهذا الغرض. ومع ذلك، هناك العديد من الأساليب التي يمكن استخدامها لتحقيق هذه النتيجة.

أحد الأساليب المباشرة هو استخدام حلقة للتكرار عبر السلسلة وحساب تكرارات السلسلة الفرعية. تتم تهيئة فهرس البداية لنتيجة التكرار الأول، وتستمر الحلقة حتى يتم العثور على التكرار n.

def find_nth_occurrence(haystack, needle, n):
    index = haystack.find(needle)
    while index >= 0 and n > 1:
        index = haystack.find(needle, index   len(needle))
        n -= 1
    return index

هذه الطريقة فعالة وسهلة الفهم، ولكنها تتطلب تمريرات متعددة عبر السلسلة، الأمر الذي يمكن أن يستغرق وقتًا طويلاً للسلاسل الكبيرة.

هناك طريقة أخرى أكثر بايثونية وهي استخدام العادية التعبيرات. توفر التعبيرات العادية طريقة قوية وموجزة للبحث عن السلاسل ومعالجتها. تستخدم الوظيفة التالية طريقة re.findall() للعثور على كافة تكرارات السلسلة الفرعية ثم تسترد الفهرس n:

import re

def find_nth_occurrence_regex(haystack, needle, n):
    occurrences = re.findall(needle, haystack)
    if len(occurrences) >= n:
        return haystack.index(occurrences[n - 1])
    else:
        return -1

هذه الطريقة أسرع من الطريقة التكرارية للسلاسل الكبيرة، ولكنها تتطلب استيراد وحدة إضافية (إعادة). بالإضافة إلى ذلك، قد يكون أقل قابلية للقراءة من النهج التكراري بالنسبة لبعض المستخدمين.

يعتمد الاختيار بين أسلوبي التعبير التكراري والعادي في النهاية على المتطلبات المحددة للمهمة المطروحة. بالنسبة للسلاسل الصغيرة، قد يكون النهج التكراري كافيًا، بينما بالنسبة للسلاسل الكبيرة، قد يوفر أسلوب التعبير العادي أداءً أفضل.

بيان الافراج أعيد طبع هذه المقالة على: 1729380497 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3