التحقق من وجود سلاسل فرعية في بايثون: بدائل لـ "يحتوي على" و"indexOf"

التحقق من وجود سلاسل فرعية في بايثون: بدائل لـ يحتوي على وindexOf
Python

فهم أساليب السلسلة في بايثون

غالبًا ما يحتاج مبرمجو بايثون إلى التحقق من وجود سلسلة فرعية داخل السلسلة. في حين أن العديد من اللغات تقدم طرقًا مثل `يحتوي على' أو `indexOf`، إلا أن بايثون لديها طريقتها الخاصة في التعامل مع هذا المطلب الشائع. في هذه المقالة، سنستكشف كيف يمكنك إجراء عمليات فحص السلسلة الفرعية في بايثون بكفاءة.

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

يأمر وصف
in التحقق من وجود سلسلة فرعية ضمن سلسلة رئيسية، وإرجاع True أو False.
find إرجاع أدنى فهرس في السلسلة حيث تم العثور على السلسلة الفرعية؛ ترجع -1 إذا لم يتم العثور عليها.
def يحدد كتلة وظيفية من التعليمات البرمجية التي تعمل فقط عند استدعائها.
for يُستخدم للتكرار فوق تسلسل (مثل قائمة أو صف أو قاموس أو مجموعة أو سلسلة).
if not عبارة شرطية تنفذ التعليمات البرمجية إذا كان الشرط خطأ.
continue يتخطى بقية الكود داخل الحلقة للتكرار الحالي فقط، ثم يستمر مع التكرار التالي.

فهم عمليات التحقق من السلسلة الفرعية في بيثون

توضح البرامج النصية المقدمة كيفية التحقق من السلاسل الفرعية في بايثون باستخدام طريقتين مختلفتين: in الكلمة المفتاحية و find طريقة. يحدد البرنامج النصي الأول وظيفة، contains_substring، وهذا يأخذ حجتين: main_string و substring. يعود True إذا substring موجود داخل main_string و False خلاف ذلك. ويتم تحقيق ذلك باستخدام in الكلمة الأساسية، وهي طريقة بسيطة وفعالة لإجراء عمليات فحص السلسلة الفرعية في بايثون. ثم يتكرر البرنامج النصي عبر قائمة السلاسل باستخدام ملف for حلقة، وإذا كان substring لم يتم العثور عليه في السلسلة الحالية، فإنه يستخدم continue بيان للانتقال إلى التكرار التالي.

يستخدم البرنامج النصي الثاني نهجا مماثلا ولكنه يستفيد من find طريقة بدلا من ذلك. الوظيفة contains_substring_with_find يتحقق مما إذا كان substring موجود في main_string بالعودة True إذا find لا يعود الأسلوب -1. ال find طريقة البحث عن substring وإرجاع أدنى مؤشر حيث تم العثور عليه، أو -1 إذا لم يتم العثور عليه. توفر هذه الطريقة المزيد من التحكم إذا كنت بحاجة إلى موضع substring، ولكن لفحص بسيط، فإن in الكلمة الرئيسية أكثر وضوحًا. يوضح كلا البرنامجين كيفية التحقق بكفاءة من السلاسل الفرعية والتعامل مع الحالات التي لم يتم العثور فيها على السلسلة الفرعية، مما يسمح لكود Python النظيف والقابل للقراءة.

كيفية التحقق من وجود سلاسل فرعية في بايثون

مثال لبرنامج Python النصي باستخدام الكلمة الرئيسية "in".

def contains_substring(main_string, substring):
    return substring in main_string

strings_to_check = ["hello world", "Python programming", "substring search"]
substring = "Python"

for string in strings_to_check:
    if not contains_substring(string, substring):
        continue
    print(f"'{substring}' found in '{string}'")

البحث عن السلاسل الفرعية باستخدام طريقة "البحث" في بايثون

مثال على برنامج Python النصي باستخدام طريقة "البحث".

def contains_substring_with_find(main_string, substring):
    return main_string.find(substring) != -1

strings_to_check = ["example string", "testing find method", "no match here"]
substring = "find"

for string in strings_to_check:
    if not contains_substring_with_find(string, substring):
        continue
    print(f"'{substring}' found in '{string}'")

استكشاف طرق السلسلة البديلة في بايثون

بالإضافة الى in الكلمة المفتاحية و find تقدم Python طرق سلسلة أخرى يمكن أن تكون مفيدة للتحقق من السلاسل الفرعية. إحدى هذه الطرق هي count، الذي يُرجع عدد التكرارات غير المتداخلة لسلسلة فرعية في السلسلة. في حين أنه ليس بديلا مباشرا ل contains أو indexOfيمكن استخدامه لتحديد ما إذا كانت هناك سلسلة فرعية عن طريق التحقق مما إذا كان العدد أكبر من الصفر. طريقة أخرى هي startswith، والذي يتحقق مما إذا كانت السلسلة تبدأ بسلسلة فرعية محددة. تعتبر هذه الطريقة مفيدة بشكل خاص عندما تحتاج إلى التحقق من البادئات في السلاسل، مثل التحقق مما إذا كان عنوان URL يبدأ بـ "http".

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

أسئلة شائعة حول طرق السلسلة الفرعية في بايثون

  1. كيف يمكنني التحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية في بايثون؟
  2. يمكنك استخدام ال in الكلمة المفتاحية أو find طريقة للتحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية.
  3. ماهو الفرق بين find و index طُرق؟
  4. ال find ترجع الطريقة -1 إذا لم يتم العثور على السلسلة الفرعية، بينما ترجع الدالة index تثير الطريقة الخطأ ValueError.
  5. هل يمكنني استخدام التعبيرات العادية للتحقق من السلسلة الفرعية في بايثون؟
  6. نعم يمكنك استخدام re.search وظيفة من re وحدة لعمليات البحث عن سلسلة فرعية متقدمة.
  7. كيف يمكنني التحقق مما إذا كانت السلسلة تبدأ بسلسلة فرعية محددة؟
  8. يمكنك استخدام ال startswith طريقة للتحقق مما إذا كانت السلسلة تبدأ بسلسلة فرعية محددة.
  9. ما الطريقة التي يمكنني استخدامها للتحقق مما إذا كانت السلسلة تنتهي بسلسلة فرعية معينة؟
  10. ال endswith يمكن استخدام الطريقة للتحقق مما إذا كانت السلسلة تنتهي بسلسلة فرعية معينة.
  11. هل هناك طريقة لحساب تكرارات سلسلة فرعية في سلسلة؟
  12. نعم count تُرجع الطريقة عدد التكرارات غير المتداخلة لسلسلة فرعية في سلسلة.
  13. كيف يمكنني التعامل مع الحالات التي لم يتم العثور فيها على السلسلة الفرعية؟
  14. يمكنك استخدام if بيان مع not أو تحقق مما إذا find تُرجع -1 للتعامل مع الحالات التي لم يتم العثور فيها على السلسلة الفرعية.
  15. هل هناك اختلافات في الأداء بين هذه الطرق؟
  16. نعم، أساليب مثل in و startswith تكون بشكل عام أسرع في عمليات التحقق البسيطة، بينما يمكن أن تكون التعبيرات العادية أبطأ ولكنها أكثر قوة.

الأفكار النهائية حول طرق السلسلة الفرعية في بايثون

بايثون ليس لديها contains أو indexOf الطريقة مثل بعض اللغات الأخرى. ومع ذلك، فإنه يوفر طرقًا مختلفة للتحقق من السلاسل الفرعية، مثل in الكلمة المفتاحية، find الطريقة والتعبيرات العادية. كل طريقة لها مميزاتها، مما يجعل من المهم اختيار الطريقة المناسبة بناءً على احتياجاتك الخاصة. من خلال إتقان هذه التقنيات، يمكنك التعامل بكفاءة مع عمليات التحقق من السلسلة الفرعية وكتابة كود Python النظيف والفعال.