لدى بايثون عدِّة دوال مبنية فيها للتعامل مع السلاسل النصية. تسمح هذه الدوال لنا بتعديل وإجراء عمليات على السلاسل النصية بسهولة. يمكنك أن تتخيل الدوال على أنها «أفعال» يمكننا تنفيذها على عناصر موجودة في الشيفرة. الدوال المبنية في اللغة هي الدوال المُعرَّفة داخل لغة بايثون وهي جاهزة مباشرةً للاستخدام.
سنشرح في هذا الدرس مختلف الدوال التي نستطيع استخدامها للتعامل مع السلاسل النصية في بايثون 3.
جعل السلاسل النصية بأحرف كبيرة أو صغيرة
الدالتان str.upper()
و str.lower()
ستُعيدان السلسلة النصية بعد تحويل حالة جميع أحرفها الأصلية إلى الأحرف الكبيرة أو الصغيرة (على التوالي وبالترتيب). ولعدم قدرتنا على تعديل السلسلة النصية بعد إنشائها، فستُعاد سلسلةٌ نصيةٌ جديدةٌ. لن تُعدَّل أيّة محارف غير لاتينية في السلسلة النصية الأصلية وستبقى على حالها.
لنحوِّل السلسلة النصية Sammy Shark
إلى أحرفٍ كبيرة:
ss = "Sammy Shark" print(ss.upper())
الناتج:
SAMMY SHARK
لنحوِّلها الآن إلى أحرفٍ صغيرة:
print(ss.lower())
وسينتج:
sammy shark
ستُسهِّل الدالتان str.upper()
و str.lower()
عملية التحقق من مساواة سلسلتين نصيتين لبعضهما أو لمقارنتهما وذلك عبر توحيد حالة الأحرف. فلو كتب المستخدم اسمه بأحرفٍ صغيرةٍ فسنستطيع أن نتأكد إن كان مُسجَّلًا في قاعدة البيانات بمقارنته بعد تحويل حالة أحرفه.
الدوال المنطقية
تتوفر في بايثون عدِّة دوال التي ستتحقق من القيم المنطقية (Boolean). هذه الدوال مفيدةٌ عند إنشائنا للنماذج التي يجب على المستخدمين ملأها؛ فمثلًا، إذا سألنا المستخدم عن الرمز البريدي وأردنا أن نقبل السلاسل النصية التي تحتوي أرقامًا فقط، أو عندما نسأله عن اسمه فسنقبل سلسلةً نصيةً تحتوي حروفًا فقط.
هنالك عددٌ من الدوال التي تُعيد قيمًا منطقيةً:
-
str.isalnum()
: تُعيدtrue
إذا احتوت السلسلة النصية على أرقام وأحرف فقط (دون رموز). -
str.isalpha()
: تُعيدtrue
إذا احتوت السلسلة النصية على أحرف فقط (دون أرقام أو رموز). -
str.islower()
: تُعيدtrue
إذا كانت جميع أحرف السلسلة النصية صغيرة. -
str.isnumeric()
: تُعيدtrue
إذا احتوت السلسلة النصية على أرقام فقط. -
str.isspace()
: تُعيدtrue
إذا لم تحتوي السلسلة النصية إلا على الفراغات. -
str.istitle()
: تُعيدtrue
إذا كانت حالة أحرف السلسلة النصية كما لو أنها عنوان (أي أنَّ أوّل حرف من كل كلمة كبير، والبقية صغيرة). -
str.isupper()
: تُعيدtrue
إذا كانت جميع أحرف السلسلة النصية كبيرة.
لننظر إلى بعضها عمليًا:
number = "5" letters = "abcdef" print(number.isnumeric()) print(letters.isnumeric())
الناتج:
True False
استخدام الدالة str.isnumeric()
على السلسلة النصية 5
سيُعيد القيمة True
، بينما استخدام نفس الدالة على السلسلة النصية abcdef
سيُعيد False
.
وبشكلٍ مماثل، يمكننا معرفة إن كانت حالة الأحرف في سلسلةٍ نصيةٍ كما لو أنها عنوان، أو أنها كبيرة أو صغيرة. لنُنشِئ بدايةً بعض السلاسل النصية:
movie = "2001: A SAMMY ODYSSEY" book = "A Thousand Splendid Sharks" poem = "sammy lived in a pretty how town"
لنجرّب الدوال المنطقية لمعرفة الناتج (سنعرض كل دالتين وناتجهما تحتهما):
print(movie.islower()) print(movie.isupper()) False True
print(book.istitle()) print(book.isupper()) True False
print(poem.istitle()) print(poem.islower()) False True
ستساعدنا معرفة إن كانت أحرف السلسلة النصية بحالة صغيرة أو كبيرة أو كأنها عنوان في تصنيف البيانات تصنيفًا سليمًا، وتوفِّر لنا الفرصة لتوحيد طريقة تخزين البيانات بالتحقق من حالة أحرفها ثم تعديلها وفقًا لذلك.
الدوال المنطقية التي تعمل على السلاسل النصية مفيدةٌ أيضًا عندما نريد التحقق إن حقَّقَت مدخلات المستخدم شروطًا معيّنة.
الدوال join() و split() و replace()
توفِّر الدوال str.join()
و str.split()
و str.replace()
إمكانياتٍ إضافيةً لتعديل السلاسل النصية في بايثون.
الدالة str.join()
تجمع سلسلتين نصيتين مع بعضهما، لكنها تفعل ذلك بتمرير إحداها إلى الأخرى. لنُنشِئ سلسلةً نصيةً:
balloon = "Sammy has a balloon."
لنستخدم الآن الدالة str.join()
لإضافة فراغات إلى تلك السلسلة النصية كالآتي:
" ".join(balloon)
إذا طبعنا الناتج:
print(" ".join(balloon))
فسنجد أنَّ السلسلة النصية الجديدة هي السلسلة الأولى لكن بين كل حرفين فراغ:
S a m m y h a s a b a l l o o n .
يمكننا أيضًا استخدام الدالة str.join()
لإنشاء مقلوب سلسلة نصية:
print("".join(reversed(balloon))) .noollab a sah ymmaS
لم نرغب في إضافة أيّة سلسلة نصية إلى أخرى، لذا أبقينا على السلسلة النصية فارغةً دون محتوى داخلها.
الدالة str.join()
مفيدةٌ أيضًا لجمع قائمة (list) من السلاسل النصية وإخراجها إلى سلسلةٍ وحيدة.
لنُنشِئ سلسلة نصية يُفصَل بين كلماتها بفاصلة من القائمة الآتية:
print(",".join(["sharks", "crustaceans", "plankton"])) sharks,crustaceans,plankton
إذا أردتَ وضع فاصلة ثم فراغ بين القيم في المثال السابق، فيمكنك أن تُعيد كتابة التعبير البرمجي السابق لإضافة فراغ بعد الفاصلة كما يلي: ", ".join(["sharks", "crustaceans", "plankton"])
.
وكما نستطيع جمع السلاسل النصية مع بعضها بعضًا، نستطيع أيضًا تجزئتها، وذلك عبر الدالة str.split()
:
print(balloon.split()) ['Sammy', 'has', 'a', 'balloon.']
الدالة str.split()
ستُعيد قائمة (list) تحتوي سلاسل نصية كانت مفصولةً بالفراغات في السلسلة النصية الأصلية إذا لم يُمرَّر معاملٌ لتحديد محرف الفصل.
يمكنك أيضًا استخدام الدالة str.split()
لحذف أجزاء معيّنة من السلسلة النصية الأصلية، فلنحاول مثلًا حذف الحرف a
:
print(balloon.split("a")) ['S', 'mmy h', 's ', ' b', 'lloon.']
حُذِفَ الحرف a
من السلسلة النصية وأصبح الناتج مقسومًا عند كل ورود للحرف a
مع الإبقاء على الفراغات.
تأخذ الدالة str.replace()
سلسلةً نصيةً وتُعيد نسخةً محدَّثةً منها بعد إجراء بعض عمليات الاستبدال عليها.
لنفترض أنَّ البالون الذي يملكه سامي قد ضاع، ولعدم امتلاك سامي للبالون في الوقت الراهن، فسنُبدِّل الكلمة "has"
إلى "had"
:
print(balloon.replace("has","had"))
أوّل سلسلة نصية داخل أقواس الدالة replace()
هي السلسلة النصية التي نريد استبدالها، والسلسلة النصية الثانية هي السلسلة التي نريد وضعها بدلًا من الأولى. ناتج تنفيذ السطر السابق هو:
Sammy had a balloon.
استخدام دوال تعديل السلاسل النصية مثل str.join()
و str.split()
و str.replace
سيمنحك تحكمًا كبيرًا بمعالجة السلاسل النصية في بايثون.
الخلاصة
لقد تعلمنا في هذا الدرس بعض الدوال المُضمَّنة في لغة بايثون لمعالجة النصوص والتعامل معها ومعرفة بعض خصائصها.
هذه المقالة جزء من سلسة مقالات حول تعلم البرمجة في بايثون 3.
ترجمة -وبتصرّف- للمقال An Introduction to String Methods in Python 3 لصاحبته Lisa Tagliaferri
اقرأ أيضًا
- المقال التالي: آلية فهرسة السلاسل النصية وطريقة تقسيمها
- المقال السابق: كيفية تنسيق النصوص
- المرجع الشامل إلى تعلم لغة بايثون
- كتاب البرمجة بلغة بايثون
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.