النصوص في بايثون – سلسلة بايثونات لتعلم لغة البايثون
دروس بايثون للمبتدئين :
دروس بايثون للمبتدئين : أهلًا بكم في المقال الثاني من سلسلة بايثونات لتعلم البايثون والذي نتناول فيه شرح “النصوص في بايثون”. نُقدم هذه السلسلة لكل مبتدئ يرغب بالبدء بتعلم لغة البرمجة الرائعة البايثون.
للاطلاع على مقالات السلسلة:
- لغة بايثون للمبتدئين – سلسلة بايثونات لتعلم البايثون والانطلاق في عالم البرمجة.
- النصوص في بايثون.
- المتغيرات والتراكيب في بايثون.
- جُمل التحكم في بايثون.
- الدوال والوحدات بايثون.
- البرمجة الكائنية في بايثون.
النصوص في بايثون
النص في بايثون عبارة عن سلسلة او مصفوفة من الحروف. يُمكن إنشاء النصوص في لغة البايثون باستخدام علامات التنصيص المزدوجة أو الفردية:
[pastacode lang=”python” manual=”%22This%20is%20a%20string.%22%0A%0A’This%20is%20also%20a%20string.’%0A%0Av%20%3D%20%22This%20is%20Pythonat%22%0A%0Av%20%3D%20’This%20is%20Pythonat%20Blog'” message=”” highlight=”” provider=”manual”/]
استخدام علامة التنصيص المزدوجة في إنشاء النصوص في البايثون يُتيح لنا استخدام علامة التنصيص الفردية والعكس كذلك دون استخدام رمزالإلغاء Escape Character، وهذه من مميزات البايثون كما في المثال التالي:
[pastacode lang=”python” manual=”v%20%3D%20%22This%20is%20Pythonat’s%20Blog%22%0A%0Av%20%3D%20’This%20is%20Pythonat%22s%20Blog'” message=”” highlight=”” provider=”manual”/]
دمج النصوص في بايثون
يُمكننا دمج النصوص ببعضها البعض في بايثون باكثر من طريقة، أحد هذه الطرق هي استخدام الرمز + ولكن من المُفضل أن نتنجنب هذه الطريقة في دمج النصوص:
[pastacode lang=”python” manual=”%22Hello%20%22%20%2B%20%22world!%22%C2%A0%20%23%20%3D%3E%20%22Hello%20world!%22″ message=”” highlight=”” provider=”manual”/]
يُمكننا دمج النصوص ببعضها البعض دون استخدام رمز + وذلك بالطريقة التالية:
[pastacode lang=”python” manual=”%22Hello%20%22%20%22world!%22%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20%22Hello%20world!%22″ message=”” highlight=”” provider=”manual”/]
كما ويُمكننا دمج النصوص باستخدام دالة format والتي تهتم بتنسيق النصوص كما سيتم شرحه بالأسفل.
المتغير النصي في بايثون عبارة عن مصفوفة حروف، حيث يُمكننا التعامل مع النص باستخدام الفهرسة Indexing وذلك للوصول إلى حروف معينة في النص:
[pastacode lang=”python” manual=”%22This%20is%20a%20string%22%5B0%5D%C2%A0%20%23%20%3D%3E%20’T'” message=”” highlight=”” provider=”manual”/]
نستخدم الدالة len المُضمنة تلقائيًا في بايثون للحصول على طول النص:
[pastacode lang=”python” manual=”len(%22This%20is%20a%20string%22)%C2%A0%20%23%20%3D%3E%2016″ message=”” highlight=”” provider=”manual”/]
لتنسيق النص نستخدم الدالة format بالطريقة التالية:
[pastacode lang=”python” manual=”%22%7B%7D%20can%20be%20%7B%7D%22.format(%22Strings%22%2C%20%22interpolated%22)%C2%A0%20%23%20%3D%3E%20%22Strings%20can%20be%20interpolated%22″ message=”” highlight=”” provider=”manual”/]
يُمكن ترقيم المدخلات حسب ترتيبها في النص ومن ثم استخدامها في تنسيق النص أكثر من مرة:
[pastacode lang=”python” manual=”%22%7B0%7D%20be%20nimble%2C%20%7B0%7D%20be%20quick%2C%20%7B0%7D%20jump%20over%20the%20%7B1%7D%22.format(%22Jack%22%2C%20%22candle%20stick%22)%0A%0A%23%20%3D%3E%20%22Jack%20be%20nimble%2C%20Jack%20be%20quick%2C%20Jack%20jump%20over%20the%20candle%20stick%22″ message=”” highlight=”” provider=”manual”/]
أو حتى عن طريق تسمية المدخلات:
[pastacode lang=”python” manual=”%22%7Bname%7D%20wants%20to%20eat%20%7Bfood%7D%22.format(name%3D%22Bob%22%2C%20food%3D%22lasagna%22)%C2%A0%20%23%20%3D%3E%20%22Bob%20wants%20to%20eat%20lasagna%22″ message=”” highlight=”” provider=”manual”/]
في البايثون 3 يُمكننا استخدام الطريقة القديمة في بايثون 2 لاجراء التنسيق في النصوص:
[pastacode lang=”python” manual=”%22%25s%20can%20be%20%25s%20the%20%25s%20way%22%20%25%20(%22Strings%22%2C%20%22interpolated%22%2C%20%22old%22)%C2%A0%20%23%20%3D%3E%20%22Strings%20can%20be%20interpolated%20the%20old%20way%22″ message=”” highlight=”” provider=”manual”/]
من المهم أن نعرف في بايثون أن القيمة None عبارة عن كائن:
[pastacode lang=”python” manual=”None%C2%A0%20%23%20%3D%3E%20None” message=”” highlight=”” provider=”manual”/]
لفحص المساواة بين متغير وقيمة None يجب علينا استخدام العملية is في ذلك والابتعاد عن استخدام تعبير == كما يلي:
[pastacode lang=”python” manual=”%22etc%22%20is%20None%C2%A0%20%23%20%3D%3E%20False%0A%0ANone%20is%20None%C2%A0%C2%A0%20%23%20%3D%3E%20True” message=”” highlight=”” provider=”manual”/]
القيمة None والقيمة 0 والمتغيرات الفارغة من strings/lists/dicts/tuples جميعها تُساوي القيمة المنطقية False، أما باقي القيم فهي True:
[pastacode lang=”python” manual=”%23%20All%20other%20values%20are%20True%0A%0Abool(0)%C2%A0%C2%A0%20%23%20%3D%3E%20False%0A%0Abool(%22%22)%C2%A0%20%23%20%3D%3E%20False%0A%0Abool(%5B%5D)%C2%A0%20%23%20%3D%3E%20False%0A%0Abool(%7B%7D)%C2%A0%20%23%20%3D%3E%20False%0A%0Abool(())%C2%A0%20%23%20%3D%3E%20False” message=”” highlight=”” provider=”manual”/]
حالة الأحرف في النص
لتحويل النص باللغة الانجليزية الى Titlecase نستخدم الدالة title مع النص الذي نريده:
[pastacode lang=”python” manual=”s%20%3D%20%22ibrahim%20mohammed%22%0A%0Aprint(s.title())%20%23%3E%20Ibrahim%20Mohammed” message=”” highlight=”” provider=”manual”/]
لتحويل النص باللغة الانجليزية الى حالة upper case أو lower case نستخدم الدالتين upper و lower على التوالي:
[pastacode lang=”python” manual=”s%20%3D%20%22ibrahim%20mohammed%22%0A%0Aprint(s.upper())%20%23%3E%20IBRAHIM%20MOHAMMED%0A%0Aprint(s.lower())%20%20%23%3E%20ibrahim%20mohammed” message=”” highlight=”” provider=”manual”/]
[pastacode lang=”python” manual=”s%20%3D%20%22Ibrahim%20Elbouhissi%22%0A%0Aprint(s.swapcase())%20%23%3E%20iBRAHIM%20eLBOUHISSI” message=”” highlight=”” provider=”manual”/]
البحث والاستبدال في النصوص
في الكثير من الأحيان نحتاج للبحث عن حرف أو مجموعة حروف في نص ما واستبداله بنص أو حرف آخر. يُمكننا إجراء هذه العمليات على النصوص في البايثون كما يلي:
لمعرفة هل يُوجد حرف او نص مُعين في نص آخر يُمكننا استخدام العملية in بالطريقة التالية:
[pastacode lang=”python” manual=”s%20%3D%20%22pythonat%22%0A%0Aprint(‘p’%20in%20s)%20%23%3E%20True%0A%0Aprint(‘pyt’%20in%20s)%20%23%3E%20True%0A%0Aprint(‘Q’%20in%20s)%20%23%3E%20False%0A%0Aprint(‘P’%20in%20s)%20%23%3E%20False” message=”” highlight=”” provider=”manual”/]
لمعرفة فهرس index لحرف او نص ما في نص آخر نستخدم الدالة index والتي تُعيد أول فهرس تجده في النص:
[pastacode lang=”python” manual=”s%20%3D%20’Pythonat’%0A%0Aprint(s.index(‘t’))%20%23%3E%202%0A%0Aprint(s.index(‘Q’))%20%23%3E%20ValueError%3A%20substring%20not%20found” message=”” highlight=”” provider=”manual”/]
اذا لم يكن الحرف او النص موجودًا، ستعيد الدالة index خطأً ValueError: substring not found، ولحل هذه المشكلة يُمكننا استخدام دالة find والتي تُعيد قيمة -1 في حالة عدم وجود النص او الحرف الذي نبحث عنه:
[pastacode lang=”python” manual=”s%20%3D%20’Pythonat’%0A%0Aprint(s.find(‘t’))%20%23%3E%202%0A%0Aprint(s.find(‘Q’))%20%23%3E%20-1″ message=”” highlight=”” provider=”manual”/]
في البحث باستخدام دالة index يُمكننا تحديد فهرس البداية الذي تبدأ الدالة بالبحث من عنده وفهرس النهاية الذي تتوقف الدالة في البحث عنده:
[pastacode lang=”python” manual=”s%20%3D%20’Pythonat’%0A%0Aprint(s.index(‘t’%2C3))%20%23%3E%207%0A%0Aprint(s.index(‘t’%2C3%2C8))%20%23%3E%207%0A%0A” message=”” highlight=”” provider=”manual”/]
لاستبدال نص نستخدم الدالة replace ونُمرر لها النص الذي نريد استبداله والنص الجديد:
[pastacode lang=”python” manual=”s%20%3D%20’Pythonat’%0A%0Aprint(s.replace(‘at’%2C’at.com’))%20%23%3E%20Pythonat.com%0A%0A%0A” message=”” highlight=”” provider=”manual”/]
إلى هنا ينتهي هذا المقال الخاص بشرح النصوص في بايثون. من المؤكد أننا لم نشرح كُل شيء، ولكننا ذكرنا أهم العمليات التي قد يحتاجها المبرمج عنده تعامله مع النصوص في بايثون. نتمنى أن نكون قد وُفقنا في إيصال المعلومة بالشكل الصحيح، ونسعد بأي ملاحظة في التعليقات. كما نتمنى منكم مشاركة مقالات السلسلة في منصات التواصل الاجتماعي مثل تويتر وفيسبوك حتى تعم الفائدة.
مقالات مشابهة
7 طرق عليك تعلمها لتحسين اختبار البرمجيات
المزخرفات في بايثون – كيف نتعامل مع دوال بايثون بحُرية أكثر
البرمجة البايثونية – كيف تكتب شيفرة برمجية بالبايثون بطريقة سليمة
البرمجة الكائنية في بايثون – سلسلة بايثونات لتعلم لغة البايثون