شرح دالّتَي split() و join() في Python مع أمثلة عملية
مقدمة إلى التعامل مع النصوص في Python
عند العمل على النصوص في Python، ستحتاج كثيرًا إلى تقسيم السلسلة النصية إلى أجزاء أصغر، أو دمج مجموعة من الأجزاء لإنشاء نص واحد منسق. وهنا تبرز أهمية الدالتين split() وjoin()، إذ تُعدّان من أكثر الأدوات استخدامًا في معالجة النصوص داخل Python.
في هذا المقال، ستتعرف إلى طريقة عمل كل من split() وjoin()، مع أمثلة عملية تساعدك على فهم الاستخدامات الشائعة والأخطاء التي ينبغي تجنبها.
من المهم أيضًا معرفة أن Strings في Python غير قابلة للتعديل، أي إن استدعاء الدوال عليها لا يغيّر النص الأصلي، بل يعيد قيمة جديدة يمكنك التعامل معها لاحقًا.

ما هي الدالة split() في Python؟
تُستخدم الدالة split() عندما تحتاج إلى تقسيم سلسلة نصية واحدة إلى عدة أجزاء أصغر. بعد تنفيذها، ستحصل عادةً على قائمة List تحتوي على المقاطع الناتجة من عملية التقسيم.
صيغة استخدام split()
<string>.split(sep, maxsplit)
في هذه الصيغة:
<string>: أي سلسلة نصية صالحة في Python.sep: الفاصل الذي سيتم التقسيم بناءً عليه، ويجب أن يكون من النوع النصيstring.maxsplit: عدد مرات التقسيم المسموح بها.
شرح الوسيطات بالتفصيل
sepوسيط اختياري. إذا لم يتم تمريره، فستقوم Python بتقسيم النص اعتمادًا على المسافات البيضاء مثل المسافة العادية.maxsplitوسيط اختياري أيضًا، والقيمة الافتراضية له هي-1، ما يعني تنفيذ التقسيم على جميع أماكن ظهور الفاصل.
إذا حددت maxsplit = 1، فسيتم التقسيم مرة واحدة فقط، وبالتالي ستحصل على جزأين. وبشكل عام، إذا تم التقسيم k مرات، فستحصل على k + 1 أجزاء.
أمثلة عملية على split() في Python
مثال 1: التقسيم باستخدام المسافات البيضاء افتراضيًا
لنبدأ بالنص التالي:
my_string = "I code for 2 hours everyday"
إذا استدعيت الدالة split() دون تمرير أي وسيطات:
my_string.split()
ستقوم Python بتقسيم النص عند كل مسافة، وتعيد قائمة تحتوي على الكلمات منفصلة.

مثال 2: التقسيم باستخدام فاصلة comma
لنفترض أن لديك النص التالي الذي يحتوي على أسماء فواكه مفصولة بفواصل:
my_string = "Apples,Oranges,Pears,Bananas,Berries"
الآن يمكنك التقسيم باستخدام الفاصلة "," كالتالي:
my_string.split(",")
ستكون النتيجة قائمة تتكون من أسماء الفواكه، بحيث يصبح كل عنصر مستقلًا داخل القائمة.

مثال 3: استخدام maxsplit لتقييد عدد مرات التقسيم
إذا أردت تنفيذ التقسيم مرتين فقط، يمكنك استخدام maxsplit بهذا الشكل:
my_string.split(",", 2)

دعنا نفسّر النتيجة:
- بعد أول فاصلة، يتم فصل
Applesعن بقية النص. - بعد الفاصلة الثانية، يتم فصل
Oranges. - بما أن
maxsplitيساوي2، تتوقف العملية عند هذا الحد.
لذلك ستكون النتيجة النهائية عبارة عن ثلاثة عناصر:
ApplesOrangesPears,Bananas,Berries
وهذا يوضح كيف يمكنك التحكم بدقة في عدد مرات تقسيم النص، وهي ميزة مفيدة جدًا عند تحليل البيانات النصية أو التعامل مع ملفات CSV أو المدخلات المهيكلة.
ما هي الدالة join() في Python؟
بعد أن تعلّمت كيفية تقسيم النص إلى أجزاء باستخدام split()، يأتي دور join() التي تقوم بالمهمة العكسية تقريبًا: دمج عدة سلاسل نصية داخل نص واحد باستخدام فاصل تحدده بنفسك.
صيغة استخدام join()
<sep>.join(<iterable>)
في هذه الصيغة:
<sep>: الفاصل الذي سيتم وضعه بين العناصر أثناء الدمج.<iterable>: أي كائن قابل للتكرار في Python مثلlistأوtupleويحتوي على سلاسل نصية.
بمعنى آخر، تقوم join() بأخذ جميع العناصر النصية داخل iterable، ثم تربطها معًا باستخدام الفاصل المحدد.
أمثلة عملية على join() في Python
لنستخدم القائمة الناتجة من المثال السابق بعد تقسيم النص:
my_list = my_string.split("," )
بعد التنفيذ ستكون قيمة my_list كالتالي:
['Apples', 'Oranges', 'Pears', 'Bananas', 'Berries']
تنبيه مهم: الفاصل يجب أن يكون string
من الأخطاء الشائعة كتابة الفاصل دون علامات اقتباس، وهذا يؤدي إلى Syntax Error لأن Python تتوقع سلسلة نصية فعلية.
,.join(my_list)

مثال 1: دمج العناصر باستخدام فاصلة ومسافة
إذا أردت دمج العناصر باستخدام فاصلة يتبعها فراغ، فاستخدم:
", ".join(my_list)
ستحصل على نص واحد يحتوي على أسماء الفواكه مفصولة بشكل منسق وواضح.

مثال 2: استخدام فاصل مخصص
يمكنك اختيار أي فاصل يناسبك. على سبيل المثال، لاستخدام ثلاثة شرطات سفلية:
"___".join(my_list)

في هذه الحالة، سيتم دمج جميع عناصر القائمة داخل سلسلة نصية واحدة، ويفصل بينها الرمز ___.
متى تستخدم split() ومتى تستخدم join()؟
| الدالة | الاستخدام الأساسي | نوع الناتج |
|---|---|---|
split() |
تقسيم سلسلة نصية إلى أجزاء أصغر | List |
join() |
دمج مجموعة من السلاسل النصية في نص واحد | String |
يمكنك التفكير فيهما على أنهما أداتان متكاملتان:
- استخدم
split()عندما تحتاج إلى تحليل النص أو استخراج أجزائه. - استخدم
join()عندما تريد إعادة بناء النص أو تنسيق المخرجات بشكل احترافي.
أفضل الممارسات عند التعامل مع split() و join()
- تأكد دائمًا من أن الفاصل في
join()مكتوب كسلسلة نصية بين علامات اقتباس. - استخدم
maxsplitعندما لا تريد تقسيم النص بالكامل. - إذا كنت تعمل مع بيانات مفصولة برموز معينة مثل الفواصل أو الشرطة العمودية، فاختر
sepالمناسب بدقة. - تذكر أن
join()يعمل بشكل صحيح عندما تكون عناصرiterableنصية.
ملخص سريع
<string>.split(sep, maxsplit)تُستخدم لتقسيم النص إلى أجزاء بناءً على فاصل محدد.<sep>.join(<iterable>)تُستخدم لدمج العناصر النصية باستخدام فاصل معين.- الدالتان من أساسيات معالجة النصوص في Python، وتظهران كثيرًا في التطبيقات العملية وتحليل البيانات وأتمتة المهام.
الخلاصة التقنية
تُعدّ split() وjoin() من أهم دوال معالجة النصوص في Python، لأنهما تبسطان التعامل مع البيانات النصية بشكل كبير. إذا أتقنت فهم الفواصل وآلية عمل maxsplit وطبيعة العناصر التي تستقبلها join()، فستتمكن من كتابة شيفرات أنظف وأكثر مرونة في مشاريعك البرمجية. من الناحية العملية، هاتان الدالتان ضروريتان في قراءة المدخلات، تنظيف البيانات، وبناء النصوص المهيكلة بكفاءة.