التعابير القياسية في بايثون الجزء 2

في الجزء الأول من هذه السلسلة توقفنا عند هذا الكود

import re

if re.search('a*', 'cucumber'):
    print "found it!"
else:
    print "didn't find it :("

ونتيجة هذا الكود ستكون found it وهذا بسبب أن العلامة * في عالم التعابير القياسية تعني تطابق منعدم لأخر حرف في السلسلة اي إذا كان النمط *a كاننا نقول اذا لم تجد اي تطابق للحرف a في أخر حرف من السلسلة فقم بكذا وهذا ماحدث في مثالنا حيث لم يجد أي تطابق للحرف a في الحرف الأخير من  السلسلة cucumber كما أن جميع السلاسل الفارغة تتطابق مع العلامة *.

أكمل القراءة →

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

التعابير القياسية في بايثون الجزء 1

التعابير القياسية عبارة عن مجموعة من التسلسل الخاص للحروف وظيفتها الأساسية المساعدة على إيجاد أو البحث عن تطابق سلسلة ما في سلسلة أخرى وهي تتميز بإستخدامها لمجموعة من الرموز تسمى الأنماط و غالبا ما ينتشر إستخدام التعابير القياسية في عالم اليونكس.

يتم إستخدام التعابير القياسية في بايثون من خلال وحدة re والتي تم إضافتها الى بايثون منذ نسخة 1.5 ومنذ ذلك الحين أصبحت جزء لا يتجزأ من بايثون وهي عبارة عن مجموعة من القواعد يتم تحديدها للبحث عن التطابق وكانك تسأل السؤال التالي : هل تحتوي هذه السلسلة على هذا النموذج؟ أو هل يوجد تطابق لهذا النموذج في أي مكان في هذه السلسلة؟ كما يمكن أيضا إستخدام التعابير القياسية من أجل تعديل السلاسل او تقطيعها من خلال عدة طرق .

أول شيء يجب ان نعرفه عن التعابير القياسية هو انهم عبارة عن سحر غامض ويصعب تذكره ولكن وبالمقابل يمكنك إستخدامها لتفعل الكثير وسطور برمجية قليلة حيث تحتوي هذه الوحدة على مجموعة من الدوال التي تقوم بالتحقق من إذا كان النمط يتطابق مع السلسلة و أما الأمر الثاني الذي يجب معرفته أيضا عن التعابير القياسية هو انها تتعامل مع السلاسل النصية فقط والتي تحتوي على الحروف العادية والخاصة ومثال على الحروف العادية مثل A,

أكمل القراءة →

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

عكس السلاسل في بايثون

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

مجموعة عن عملية الترشيح

values="abcdefg"
values[1:3]
'bc'
 values[2:-1]
'cdef'
values[:2]
'ab'
values[2:]
'cdefg'
values[::2]
'aceg'
values[::-1]
'gfedcba'

يمكن استعمال مع كل من القوائم ، السلاسل ، الصفوف، والمصفوفات.
في المثال السابق في السطر قبل الأخير  قمت باستخدام [1::] وهذا الترشيح يقوم بعكس السلسلة تماما وهذه هي الطريقة الوحيدة لعكس السلاسل في بايثون .

name="kader"
name[::-1]
'redak'
أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

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

في الدرس السابق تحدثنا عن كيفية الحصول عن البيانات من المستخدم وعرضها على الشاشة وهذا مجرد البداية ، فالبرنامج الحقيقي يحصل على البيانات من المستخدم ويقوم بالكثير معها وقبل هذا يجب ان نعرف عن السلاسل وكيفية التعامل معها.

 

السلاسل من بين أكثر الأنواع استعمالا على بايثون وكل ماهو موجود داخل ” ” أو ‘ ‘ فهو عبارة عن سلسلة .
دعونا نأخذ مثال عن انشاء السلاسل لنفهمها يشكل أسرع

var1 = 'Hello World!'
var2 = "Python Programming"

و
الأن دعونا نقوم بعرض السلسلة باستخدام الدالة print وأرجوا ان تنتبه لهذا المثال

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

وعند تنفيذ الامر السابق سيتم عرض مايلي :

var1[0]:  H
var2[1:5]:  ytho
  

أرجوا اني قد وضحت ماهي السلاسل وكما أقول دائما هذا الموضوع لا يغني عن البحث والقراءة والتطبيق .
 

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

تحقق ما اذا كانت السلسلة عبارة عن رقم باستخدام str.isdigit

غالبا ما نحتاج لكي نتحقق من اي سلسلة في بايثون ما اذا كانت عبارة عن أرقام أم لا، وقد نحتاج اليها خاصة مع البرامج التي يكون فيها ادخال البيانات من طرف المستخدم أو من خلال جلب المعلومات من قواعد البيانات، واعتمادا على نوع الرقم الذي نتوفعه يمكننا استخدام عدة طرق مثل تحليل السلسلة بواسطة التعابير المنطقية او باستعمال خاصية التحويل .
الدالة التالية يمكن القول أنها من أسرع وأقوى طريقة للتحقق من اذا كانت السلسلة عبارة عن رقم أو عدد ، فهي تدعم str و اليونيكود وهي تعمل على بايثون 2 و3

وعند تجريب الكود نحصل على التالي :

 

التحقق من السلسة اذا كانت رقمية باستخدام الدالة المدمجة (str.isdigit)

كن متأكد انه عند استعمال الدالة  str.isdigit فانت تتاكد اذا كانت السلسة تحتوي على رقم بين “1 ” وليس قيمة رقمية 1

 

أكمل القراءة →

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع