السلاسل النصية في بايثون 1
نشر في يوم Sat 05 June 2021 في قسم \ اقسام سلسلة مبادئ البايثون
سابقا في احدى مواضيع انواع البيانات تعرفنا على ماهية السلاسل النصية وكيفية انشائها واليوم في هذا الموضوع سنغوص في الاعماق قليلا.
تقريبا لايوجد اي برنامج في اي لغة برمجية لا يتعامل مع السلاسل النصية ويقوم بمعالجتها بطريقة او بأخرى.
البايثون يقدم مجموعة جيدة جداً في معالجة النصوص من عوامل ووظائف, وسوف نتعرف عليها تباعاً
قبل ذلك يجب ان نذكر ان تقريبا كل شي في البايثون عبارة عن كائن, والكائن يحمل بطياته العديد من الوظائف المدمجة مسبقا والتي تمكننا من استخدامها على هذه الكائنات.
والسلسلة النصية string
في البايثون هو عبارة عن كائن.
لذلك عندما نقول ميثود فأننا نعني انها وضيفة مدمجة في هذا النوع من البيانات اي الكائن ومكتوبة داخل class
. ويمكننا استخدامها من خلال عملية النقطة .
كالتالي:
>>> s = "I love python"
>>> s.upper()
'I LOVE PYTHON'
هنا يقوم الميثود
upper
بتغيير حالة الاحرف كلها الى كبيرة
وعندما نقول فنكشن فأننا نعني انها وضيفة لكنها مستقلة وغير مكتوبة داخل اي كلاس وتقبل بعض انواع البيانات وتقوم بمعالجتها وارجاع المطلوب منها
كالتالي:
>>> s = "I love python"
>>> len(s)
13
هنا تقوم الفنكشن
len
بارجاع عدد الاحرف التي تكون في السلسة النصية مع المسافات
لنبدأ
عوامل السلاسل النصية
مسبقا قد تعرفتم على عاملين +
و *
وكنا قد استخدمناها مع الاعداد, لكنها ايضا يمكن استخدامها مع السلاسل النصية كما سنوضح تباعاً.
العامل +
يقوم هذا العامل عند استخدامه مع السلاسل النصية بجمع او توصيل سلسلتين نصيتين مع بعضها البعض.
مثال:
>>> s1 = "Hello, "
>>> s2 = "World!"
>>> s1 + s2
'Hello, World!
العامل *
يقوم هذا العامل بتكرار او نسخ النص بعدد معين.
مثال:
>>> s = "I love python! "
>>> s * 3
'I love python! I love python! I love python! '
>>> 3 * s
'I love python! I love python! I love python! '
لا يهم اذا كان النص على يمين او يسار العامل
العامل in
يقوم هذا العامل بتأكيد ما اذا كان هناك نص موجود داخل نص اخر ومن ثم يرجع True
او False
.
مثال:
>>> s = "I love python"
>>> "python" in s
True
>>> "38" in "contact at pythonar38@gmail.com"
True
>>> "Essa" in s
False
ايضا هناك عامل اخر not in
والذي يقوم بالعكس تماماً
مثال:
>>> "Essa" not in "I love python"
True
وظائف لمعالجة النصوص "فنكشن"
مثل ما ذكرنا مسبقا الفنكشن مكتوبة مسبقا وهي مستقلة ولا تتبع لاي كائن ومتاحة في المفسر تلقائياً.
الفنكشن ord
تقوم هذه الفنكشن بتحويل الحرف الى رقم.
كما تعرفون وفي ادنى مستوى الحاسوب يقوم بتخزين كل شي على هيئة رقم, حتى الاحرف يتم تمثيلها بأرقام.
وهناك خرائط توضح ارقام الاحرف وابسطها ASCII والتي تحوي على الاحرف اللاتينية.
مثال:
>>> ord("p")
112
>>> ord("3")
51
>>> ord("!")
33
لكن ماذا عن اللغات الاخرى التي لا تستخدم الرسم اللاتيني؟
هناك ترميز اخر ويسمى unicode
والذي يحاول ان يوفر تمثيل عددي لجميع الاحرف والرموز وكل ما يرسم كتابياً في جميع لغات العالم حتى التعابير الايموجي.
بايثون في اصدارها الثالث قدمت دعما جيداً لهذا الترميز لذلك لن نواجة مشاكل في ذلك.
مثال:
>>> ord("أ")
1571
>>> ord("ب")
1576
>>> ord("ج")
1580
>>> ord("د")
1583
الفنكشن chr
تقوم هذه الفنكشن بعكس ما تقوم به ord
تماماً, بحيث نعطيها الرقم وتقوم بأرجاع الحرف.
مثال:
>>> chr(1571)
'أ'
>>> chr(112)
'p'
الفنكشن len
تقوم هذه الفنكشن بأرجاع عدد الاحرف الموجودة داخل النص.
مثال:
>>> s = "I love python"
>>> len(s)
13
الفنكشن str
تقوم هذه الفنكشن بتحويل او ارجاع التمثيل النصي لأي كائن في البايثون.
مثال:
>>> str(True)
'True'
>>> str(38)
'38'
>>> str("Essa")
'Essa'
سنتوقف عند هذا الحد وفي المواضيع التالية سنكمل.