النصوص في بايثون – سلسلة بايثونات لتعلم لغة البايثون

2 3٬508

دروس بايثون للمبتدئين :

دروس بايثون للمبتدئين : أهلًا بكم في المقال الثاني من سلسلة بايثونات لتعلم البايثون والذي نتناول فيه شرح “النصوص في بايثون”. نُقدم هذه السلسلة لكل مبتدئ يرغب بالبدء بتعلم لغة البرمجة الرائعة البايثون.

للاطلاع على مقالات السلسلة:

  1. لغة بايثون للمبتدئين – سلسلة بايثونات لتعلم البايثون والانطلاق في عالم البرمجة.
  2. النصوص في بايثون.
  3. المتغيرات والتراكيب في بايثون.
  4. جُمل التحكم في بايثون.
  5. الدوال والوحدات بايثون.
  6. البرمجة الكائنية في بايثون.

النصوص في بايثون

النص في بايثون عبارة عن سلسلة او مصفوفة من الحروف. يُمكن إنشاء النصوص في لغة البايثون باستخدام علامات التنصيص المزدوجة أو الفردية:

"This is a string."

'This is also a string.'

v = "This is Pythonat"

v = 'This is Pythonat Blog'

استخدام علامة التنصيص المزدوجة في إنشاء النصوص في البايثون يُتيح لنا استخدام علامة التنصيص الفردية والعكس كذلك دون استخدام رمزالإلغاء Escape Character، وهذه من مميزات البايثون كما في المثال التالي:

v = "This is Pythonat's Blog"

v = 'This is Pythonat"s Blog'

دمج النصوص في بايثون

يُمكننا دمج النصوص ببعضها البعض في بايثون باكثر من طريقة، أحد هذه الطرق هي استخدام الرمز + ولكن من المُفضل أن نتنجنب هذه الطريقة في دمج النصوص:

"Hello " + "world!"  # => "Hello world!"

يُمكننا دمج النصوص ببعضها البعض دون استخدام رمز + وذلك بالطريقة التالية:

"Hello " "world!"    # => "Hello world!"

كما ويُمكننا دمج النصوص باستخدام دالة format والتي تهتم بتنسيق النصوص كما سيتم شرحه بالأسفل.

المتغير النصي في بايثون عبارة عن مصفوفة حروف، حيث يُمكننا التعامل مع النص باستخدام الفهرسة Indexing وذلك للوصول إلى حروف معينة في النص:

"This is a string"[0]  # => 'T'

نستخدم الدالة len المُضمنة تلقائيًا في بايثون للحصول على طول النص:

len("This is a string")  # => 16

لتنسيق النص نستخدم الدالة format بالطريقة التالية:

"{} can be {}".format("Strings", "interpolated")  # => "Strings can be interpolated"

يُمكن ترقيم المدخلات حسب ترتيبها في النص ومن ثم استخدامها في تنسيق النص أكثر من مرة:

"{0} be nimble, {0} be quick, {0} jump over the {1}".format("Jack", "candle stick")

# => "Jack be nimble, Jack be quick, Jack jump over the candle stick"

أو حتى عن طريق تسمية المدخلات:

"{name} wants to eat {food}".format(name="Bob", food="lasagna")  # => "Bob wants to eat lasagna"

في البايثون 3 يُمكننا استخدام الطريقة القديمة في بايثون 2 لاجراء التنسيق في النصوص:

"%s can be %s the %s way" % ("Strings", "interpolated", "old")  # => "Strings can be interpolated the old way"

من المهم أن نعرف في بايثون أن القيمة None عبارة عن كائن:

None  # => None

لفحص المساواة بين متغير وقيمة None يجب علينا استخدام العملية is في ذلك والابتعاد عن استخدام تعبير == كما يلي:

"etc" is None  # => False

None is None   # => True

القيمة None والقيمة 0 والمتغيرات الفارغة من strings/lists/dicts/tuples جميعها تُساوي القيمة المنطقية False، أما باقي القيم فهي True:

# All other values are True

bool(0)   # => False

bool("")  # => False

bool([])  # => False

bool({})  # => False

bool(())  # => False

حالة الأحرف في النص

لتحويل النص باللغة الانجليزية الى Titlecase نستخدم الدالة title مع النص الذي نريده:

s = "ibrahim mohammed"

print(s.title()) #> Ibrahim Mohammed

لتحويل النص باللغة الانجليزية الى حالة upper case أو lower case نستخدم الدالتين upper و lower  على التوالي:

s = "ibrahim mohammed"

print(s.upper()) #> IBRAHIM MOHAMMED

print(s.lower()) #> ibrahim mohammed
اذا أردنا عكس حالة الأحرف نستخدم الدالة swapcase كما في المثال التالي:
s = "Ibrahim Elbouhissi"

print(s.swapcase()) #> iBRAHIM eLBOUHISSI

البحث والاستبدال في النصوص

في الكثير من الأحيان نحتاج للبحث عن حرف أو مجموعة حروف في نص ما واستبداله بنص أو حرف آخر. يُمكننا إجراء هذه العمليات على النصوص في البايثون كما يلي:

لمعرفة هل يُوجد حرف او نص مُعين في نص آخر يُمكننا استخدام العملية in بالطريقة التالية:

s = "pythonat"

print('p' in s) #> True

print('pyt' in s) #> True

print('Q' in s) #> False

print('P' in s) #> False

لمعرفة فهرس index لحرف او نص ما في نص آخر نستخدم الدالة index والتي تُعيد أول فهرس تجده في النص:

s = 'Pythonat'

print(s.index('t')) #> 2

print(s.index('Q')) #> ValueError: substring not found

اذا لم يكن الحرف او النص موجودًا، ستعيد الدالة index خطأً ValueError: substring not found، ولحل هذه المشكلة يُمكننا استخدام دالة find والتي تُعيد قيمة -1 في حالة عدم وجود النص او الحرف الذي نبحث عنه:

s = 'Pythonat'

print(s.find('t')) #> 2

print(s.find('Q')) #> -1

في البحث باستخدام دالة index يُمكننا تحديد فهرس البداية الذي تبدأ الدالة بالبحث من عنده وفهرس النهاية الذي تتوقف الدالة في البحث عنده:

s = 'Pythonat'

print(s.index('t',3)) #> 7

print(s.index('t',3,8)) #> 7

لاستبدال نص نستخدم الدالة replace ونُمرر لها النص الذي نريد استبداله والنص الجديد:

s = 'Pythonat'

print(s.replace('at','at.com')) #> Pythonat.com

إلى هنا ينتهي هذا المقال الخاص بشرح النصوص في بايثون. من المؤكد أننا لم نشرح كُل شيء، ولكننا ذكرنا أهم العمليات التي قد يحتاجها المبرمج عنده تعامله مع النصوص في بايثون. نتمنى أن نكون قد وُفقنا في إيصال المعلومة بالشكل الصحيح، ونسعد بأي ملاحظة في التعليقات. كما نتمنى منكم مشاركة مقالات السلسلة في منصات التواصل الاجتماعي مثل تويتر وفيسبوك حتى تعم الفائدة.

اترك ردًا

Your email address will not be published.