الدليل الرقمي

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


بايثون index() يمكن استخدام الطريقة للبحث في سلسلة واسترداد فهرس سلسلة فرعية من Python. يمكنك إما البحث في سلسلة Python بأكملها أو جزء منها فقط.

بناء الجملة ووظيفة فهرس سلسلة بايثون¶

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

string.index(substring)
string.index(substring, start, end)

بايثون

في هذا المثال، string هي سلسلة تعسفية و substring هي السلسلة الفرعية للبحث عنها. start و end – الإشارة إلى مؤشرات البداية والنهاية للبحث. إذا لم يتم تحديد فهرس نهاية (إذا كان لديك وسيطتان فقط في المجمل)، فسينتهي البحث في نهاية السلسلة. تعود الطريقة فهرس التواجد الأول للسلسلة الفرعية كقيمة الإرجاع. لذا، إذا حدثت سلسلة فرعية أكثر من مرة، فسيتم تجاهل جميع التكرارات بعد التكرار الأول index(). فيما يلي مثال لكيفية عمل الطريقة.

string = "I am a string"

print(string.index("String"))


print(string.index("in"))
# output: 5 (the "a" in "am")

print(string.index("in", 7, len(string) - 1))
# output: 9 (the "ing" in "string")

print(string.index("in", 7))
# output: 9 (the "ing" in "string")

print(string.index("Python"))
# Exception-error message: ValueError

بايثون

كما ترون في المثال أعلاه، والثاني index() يُرجع استدعاء فقط فهرس “a” في “am”. يتم تجاهل التكرارات الأخرى لـ “am”. في النداء الأخير من index() يمكنك أن ترى أن الطريقة ترجع a ValueError استثناء إذا لم يتم تضمين السلسلة الفرعية. يظهر هذا الاستثناء أيضًا إذا تم إدخال فهارس سالبة أو إذا كان فهرس البداية أكبر من فهرس النهاية. إذا كانت إحدى هذه الحالات ممكنة في برنامجك، فيمكنك معالجة الاستثناء وفقًا لذلك.

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

البديل هو طريقة البحث¶

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

string = "Python"

if(string.find("Py") != -1):
    print("Substring included! Index: ", string.find("Py"))
else:
    print("Substring not included!")

بايثون

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

بايثون هي واحدة من لغات البرمجة الأكثر مرونة هناك. يمنحك هذا الكثير من الخيارات فيما يتعلق بما يمكنك القيام به على السلاسل. اكتشف المزيد في مقالتنا حول الطرق المختلفة لـ[مقارنةسلاسلبايثون[comparePythonstrings

أمثلة على فهرس سلسلة بايثون¶

الآن سننظر في مثالين لكيفية ذلك index() يمكن استخدامها في البرنامج. أولاً، سننظر إلى مثال بسيط، ثم إلى مثال أكثر تعقيدًا قليلًا.

string = "Peter Piper picked a peck of pickled peppers."
print("The string to check is ", string)

while(True):
    sub = input("substring input: ")
    try:
        print("the index is: ", string.index(sub))
    except:
        print("The substring is not included :/")

بايثون

يبحث هذا المثال عن سلسلة فرعية في سلسلة. ثم يقوم بإخراج ما إذا كانت السلسلة الفرعية موجودة في السلسلة، وإذا كان الأمر كذلك، في أي فهرس. في هذه الحالة، تكون السلسلة التي نبحث عنها محددة مسبقًا، ولكن يتم إعادة إدخال السلسلة الفرعية بواسطة المستخدم في كل مرة.

def try_except(start):
    try:
        return string.index(sub, start)
    except:
        return -1

string = input("string input: ")
sub = input("substring input: ")

occur = 0
start = 0

while(try_except(start) != -1):
    start = try_except(start) + len(sub)
    occur = occur + 1

print("Occur: ", occur)

بايثون

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

هل تبحث عن طريقة لنشر تطبيق الويب الخاص بك بسرعة وسهولة؟ إذن النشر الآن من IONOS هو النظام الأساسي المثالي لك!


اكتشاف المزيد من إشراق العالم

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى