str.find() البحث عن موضع سلسلة فرعية
آخر تحديث: 2026-09-22
str.find() البحث عن موضع سلسلة فرعية
str.find(sub[, start[, end]]) تُرجع فهرس أول ظهور لـ sub؛ وتُرجع -1 إذا لم تُوجد (دون رفع استثناء).
| التصنيف | دوال النصوص |
|---|---|
| النوع | دوال الأنواع المدمجة |
| إصدار بايثون | all |
📝 الصياغة
str.find(sub[, start[, end]])
⚙️ المعاملات
| sub مطلوب | The substring to search for. |
|---|---|
| start اختياري | Start index of the range (inclusive); None means the beginning.(القيمة الافتراضية:None) |
| end اختياري | End index of the range (exclusive); None means the end.(القيمة الافتراضية:None) |
القيمة المُعادة:int. The lowest index where sub is found, or -1 if not found.
يعدّل الكائن الأصلي:لا (يُعيد كائنًا جديدًا)
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
2
-1
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qهل يُثير find() استثناءً عندما لا تُعثر على السلسلة الفرعية؟
Aلا. هذا هو أكبر فرق بينه وبين index(): find() يُرجع -1 عندما لا يُعثر عليها. فضِّل find() عندما لا تكون متأكدًا من وجود السلسلة الفرعية.
Qكيف أختار بين find() و index()؟
Aاستخدم find() عندما تريد فقط معرفة «هل توجد وأين» (يُرجع -1 دون خطأ)؛ واستخدم index() عندما يجب أن توجد ويكون عدم العثور عليها خطأ برمجيًا (يُثير ValueError).
Qكيف أجد موضع التكرار الثاني؟
Aاستخدم الوسيط start لتجاوز الأول: 'banana'.find('a', 2) يبدأ البحث من الفهرس 2 ويُرجِع 3. وللعثور على آخر تكرار استخدم rfind().
Qماذا تُرجع find('') مع سلسلة فرعية فارغة؟
Aإنها تُرجع 0 (أو قيمة الوسيط start)، لأن السلسلة الفرعية الفارغة تتطابق في أي موضع.