فهرسة وتقطيع السلاسل النصية في بايثون
السلسلة في بايثون هو تسلسل مكون من حرف واحد أو أكثر ويمكن أن يتكون من أحرف أو أرقام أو مسافات بيضاء (فارغة) أو رموز. تسمح لنا الفهرسة في بايثون الي الوصول إلى أحرف معينة في سلسلة معينة باستخدام قيمة رقمية. تبدأ فهرسة السلسلة من الصفر حيث يحتوي الحرف الأول في السلسلة على فهرس رقم 0 ، والحرف التالي على فهرس رقم 1 ، وهكذا.
لاحظ الشكل السابق ، تبدأ السلسلة عند الحرف A الذي يقابل فهرس رقم 0 ، وتنتهي السلسلة عند الرمز ! الذي يقابل فهرس رقم 11 .
لاحظ ايضاً أن المسافة البيضاء (الفارغة) لها رقم فهرس 5 . وايضاً الرمز ! له رقم فهرس 11
هناك طريقتين للوصول إلى الأحرف في سلسلة :
- عن طريق رقم الفهرس الموجب الذي يبدأ من رقم 0
- عن طريق رقم الفهرس السالب الذي يبدأ برقم 1-
الوصول إلى الأحرف عن طريق رقم الفهرس الموجب
في هذا النوع من الفهرسة ، نقوم بتمرير الفهرس الموجب (الذي نريد الوصول إليه) بين قوسين مربعين. يبدأ رقم الفهرس من رقم الفهرس 0 (الذي يشير إلى الحرف الأول من السلسلة).
مثال:
# الوصول إلى حرف السلسلة في الفهرس 0
string = "Ahmed Obaid!"
print(string[0])
سيكون الناتج:
A
في المثال السابق عندما أشرنا إلى رقم فهرس معين في السلسلة ، فأن بايثون أرجعت لنا الحرف الموجود في هذا الموضع. نظرًا لأن الحرف A موجود في الفهرس رقم 0 للسلسلة "!Ahmed Obaid" ، فعندما قمنا بطباعة string[0] كان الناتج A .
مثال اخر:
# الوصول إلى حرف السلسلة في الفهرس 7
string = "Ahmed Obaid!"
print(string[7])
سيكون الناتج:
b
في المثال السابق عندما أشرنا إلى رقم فهرس معين في السلسلة ، فأن بايثون أرجعت لنا الحرف الموجود في هذا الموضع. نظرًا لأن الحرف b موجود في الفهرس رقم 7 للسلسلة "!Ahmed Obaid" ، فعندما قمنا بطباعة string[7] كان الناتج b .
الوصول إلى الأحرف عن طريق رقم الفهرس السالب
إذا كان لدينا سلسلة طويلة وأردنا تحديد عنصر في النهاية ، فيمكننا العد التنازلي من نهاية السلسلة ، بدءاً من رقم الفهرس -1 (الذي يشير إلى الحرف الأخير من السلسلة) . ثم نقوم بتمرير الفهرس السالب (الذي نريد الوصول إليه) بين أقواس مربعة.
مثال :
# الوصول إلى حرف السلسلة في الفهرس الأخير
string = "Ahmed Obaid!"
print(string[-1])
سيكون الناتج:
!
في المثال السابق عندما أشرنا إلى رقم فهرس معين في السلسلة ، فأن بايثون أرجعت لنا الحرف الموجود في هذا الموضع. نظرًا لأن الرمز ! موجود في نهاية السلسة في الفهرس السالب رقم 1- للسلسلة "!Ahmed Obaid" ، فعندما قمنا بطباعة string[-1] كان الناتج هو الرمز ! .
مثال اخر:
# الوصول إلى حرف السلسلة في الفهرس 10 من نهاية السلسة
string = "Ahmed Obaid!"
print(string[-10])
سيكون الناتج:
m
في المثال السابق عندما أشرنا إلى رقم فهرس معين في السلسلة ، فأن بايثون أرجعت لنا الحرف الموجود في هذا الموضع. نظرًا لأن الحرف m موجود في الفهرس السالب رقم 10- للسلسلة "!Ahmed Obaid" ، فعندما قمنا بطباعة string[-10] كان الناتج b .
تقطيع السلاسل ( Slicing )
التقطيع في بايثون Slicing هي ميزة تمكننا من الوصول إلى أجزاء من السلسة. نستخدم التقطيع عندما نطلب جزءًا من السلسلة وليس السلسلة الكاملة. لنفترض أننا نود طباعة الكلمة Obaid فقط من السلسة "!Ahmed Obaid" يمكننا فعل ذلك عن طريق نطاق من أرقام الفهرس مفصولة بنقطتين [start : end : step] .
بناء نطاق الفهرسة [start : end : step]
- start تعني بداية الفهرس من هنا ( المكان الذي تبدأ منه )
- end: تعني نهاية الفهرس هنا ( المكان الذي تنتهي فيه )
- step : هي وسيطة اختيارية تحدد الزيادة بين كل فهرس
مثال:
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# اطبع فقط كلمة "عبيد" من السلسلة
print(str[6:11])
سيكون الناتج:
Obaid
في المثال السابق قمنا بطباعة الكلمة Obaid فقط من السلسة "!Ahmed Obaid"
إذا أردنا تضمين بداية السلسلة أو نهايتها في الجزء المقتطع من السلسلة يمكننا فعل ذلك بعدم وضع رقم لبداية الفهرس أو رقم لنهاية الفهرس فمثلاً أذا اردنا طباعة كلمة ahmed فقط من السلسلة نقوم بفعل ذلك عن طريق كتابة print(str[:5]) كماهو موضح في المثال التالي
مثال:
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# اطبع فقط كلمة "احمد" من السلسلة
print(str[:5])
سيكون الناتج:
Ahmed
أذا اردنا اقتطاع جزء من السلسلة بداية من الفهرس رقم 6 الي نهاية السلسلة نفعل كما في المثال التالي
مثال:
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# التقطيع باستخدام تسلسل الفهرسة
print(str[6:])
سيكون الناتج:
Obaid!
يمكنك أيضاً استخدام الفهارس السالبة في تقسيم سلسلة نصية، فكما ذكرنا سابقا، تبدأ أرقام الفهارس السلبية من الرقم 1- ،ويستمر العد تنازلياً إلى أن نصل إلى بداية السلسلة النصية وعند استخدام الفهارس السالبة فسنبدأ من الرقم الأصغر لأنه يقع أولاً في السلسلة.
مثال:
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# التقطيع باستخدام تسلسل الفهرسة
print(str[-12:-7])
سيكون الناتج:
Ahmed
ملحوظة: اثناء استخدام الأرقام السالبة ، تأكد من عدم تمرير فهرس أقل من - (طول السلسلة). وإلا ، فسيواجه برنامجك خطأ .
افتراضيا يأتي المعامل الثالث step بقيمة 1 . وهو يحدد الزيادة بين كل فهرس ويشير إلى عدد الأحرف التي يجب تجاوزها في السلسلة النصية. كما هو موضح في المثال التالي
مثال
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# التقطيع باستخدام تسلسل الفهرسة
print(str[6:11:1])
سيكون الناتج:
Obaid
كما في المثال السابق إذا كان المعامل step يساوي 1 فسوف يتم تضمين جميع الحروف الموجودة بين الفهرسين. واذا لم يتم ذكر المعامل step من الاساس فان بايثون تقوم تلقائياً باضافة واحد الي نطاق الفهرس أما أذا قمنا بتغيير قيمة المعامل step الي رقم أخر فسيتم تجاهل بعض الاحرف
مثال :
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# التقطيع باستخدام تسلسل الفهرسة
print(str[6:11:2])
سيكون الناتج:
Oad
في المثال السابق قمنا بتغيير قيمة المعامل step الي 2 مما أدي إلي إلى تجاوز حرف بين كل حرفين
يمكنك ايضاً تحديد رقم سالب كمعامل step حيث سيتم ترتيب السلسلة بشكل معكوس
مثال :
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# التقطيع باستخدام تسلسل الفهرسة
print(str[-2:-11:-8])
سيكون الناتج:
dm
ويمكنك حذف الفهرسين وترك النقطتين الرأسيتين ( : ) سيؤدي ذلك إلى إبقاء كامل السلسلة .
مثال:
# تعريف متغير يحتوي علي السلسلة
str = "Ahmed Obaid!"
# التقطيع باستخدام تسلسل الفهرسة
print(str[:])
سيكون الناتج:
Ahmed Obaid!
مصادر خارجية لمعلومات أكثر:
اذا كان لديك اي اسئلة أو استفسارات اتركها في التعليقات
الكلمات الدلالية
بايثون أنواع البيانات في بايثون السلاسل في بايثون فهرسة وتقطيع السلاسل
شارك المقال
عن الكاتب
أحمدُ عُبَيْد
مرحباً، أنا أحمد عبيد مبرمج عربي مصري. أود أن أضع تجاربي وخبراتي في تعلم بايثون على هذا الموقع حتى يكون مرجعاً لي ولكم أيضاً.
عفواً..قم بتسجيل الدخول اولاً..حتي تستطيع التعليق