تقسيم ودمج السلاسل النصية

8.5 تقسيم ودمج السلاسل النصية

أهداف التعلم

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

  • استخدام التابع split() لتقسيم سلسلة نصية إلى سلاسل فرعية.
  • دمج الكائنات في قائمة لتكوين سلسلة نصية واحدة باستخدام التابع join().

split()

يمكن تقسيم سلسلة نصية في بايثون إلى سلاسل فرعية باستخدام فاصل. ويُسمّى الفاصل أيضًا مُحدِّدًا. يُقسِّم التابع split()، عند تطبيقه على سلسلة نصية، السلسلةَ النصية إلى سلاسل فرعية باستخدام الوسيط المُعطى كفاصل. مثال: "1-2".split('-') يُرجع قائمة من السلاسل الفرعية ["1", "2"]. إذا لم تُمرَّر أي وسائط إلى التابع split()، تُستخدم المسافات البيضاء فواصلَ. مثال: "1\t2\n3 4".split() يُرجع ["1", "2", "3", "4"].

نقطة تحقق

split() لتقسيم السلسلة النصية إلى رموز

مفاهيم تطبيقية

أمثلة على فواصل السلاسل النصية والتابع split()

1.
ما ناتج print("1*2*3*".split('*'))؟
  1. ["1", "*", "2", "*", "3", "*"]
  2. ["1", "2', "3"]
  3. [1, 2, 3]
2.
ما ناتج print("a year includes 12 months".split())؟
  1. ["a year includes 12 months"]
  2. ["a", "year", "includes", 12, "months"]
  3. ["a", "year", "includes", "12", "months"]
3.
ما ناتج الشِفرة التالية؟
s = """This
is a
test"""

out = s.split()
print(out)
  1. Error
  2. ['This', 'is', 'a', 'test']
  3. >['This', 'is a', 'test']

join()

التابع join() عكس التابع split(): إذ تُدمَج قائمة من السلاسل النصية في سلسلة نصية واحدة. ويُدرَج الفاصل بين العناصر عند الدمج. مثال: ','.join(["this", "is", "great"]) يُرجع "this,is,great".

نقطة تحقق

join() لدمج الرموز في سلسلة نصية واحدة

مفاهيم تطبيقية

تطبيق التابع join() على قائمة من السلاسل النصية

4.
ما ناتج الشِفرة التالية؟
elements = ['A', 'beautiful', 'day', 'for', 'learning']

print(",".join(elements))
  1. 'A beautiful day for learning'
  2. ['A, beautiful, day, for, learning']
  3. 'A,beautiful,day,for,learning'
5.
ما طول السلسلة النصية "sss".join(["1","2"])؟
  1. 2
  2. 5
  3. 8
6.
ما القيمة المخزنة في المُتغيِّر out؟
s = ["1", "2"]
out = "".join(s)
  1. 12
  2. "12"
  3. "1 2"

جرّب بنفسك

كلمات فريدة ومفصولة بفواصل

اكتب برنامجًا يقبل سلسلة من الكلمات المفصولة بفواصل كإدخال، ويطبع الكلمات في أسطر منفصلة. مثال: إذا أُعطيت السلسلة النصية "happy,smiling,face"، سيكون الإخراج كالتالي:

    happy
    smiling
    face

جرّب بنفسك

طلب الغداء

استخدم التابع join() لإعادة طلب المستخدم في مطعم، مفصولًا بفواصل. يُدخِل المستخدم كل صنف طعام في سطر منفصل، وعند الانتهاء من الطلب يُدخِل سطرًا فارغًا. يختلف الناتج بحسب عدد الأصناف المطلوبة:

  • إذا لم يدخل المستخدم شيئًا، يخرج البرنامج:
    You ordered nothing.
  • إذا أدخل المستخدم صنفًا واحدًا (مثال: eggs)، يخرج البرنامج:
    You ordered eggs.
  • إذا أدخل المستخدم صنفين (مثال: eggs, ham)، يخرج البرنامج:
    You ordered eggs and ham.
  • إذا أدخل المستخدم ثلاثة أصناف أو أكثر (مثال: eggs, ham, toast)، يخرج البرنامج:
    You ordered eggs, ham, and toast.

عند وجود ثلاثة أصناف أو أكثر، يُفصل بين كل صنف بفاصلة ومسافة، وتُضاف كلمة "and" قبل الصنف الأخير.