المتغيرات النصية String في لغة بايثون python

تعتبر السلاسل ن أكثر النماذج استخداماً في لغة البرمجة Python ويتم إنشاؤها بشكل سهل من خلال حصر الأحرف ضمن إشارتي تنصيص. ويتم التعامل مع التنصيص المفرد والمزدوج على السواء.
يتم إنشاء السلاسل بالسهولة نفسها التي يتم بها إسناد القيم إلى المتحولات. مثال –

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

الوصول للقيم في السلاسل

لا تدعم لغة البرمجة Python نموذج الحروف وتتم معالجة ذلك كسلاسل من طول واحد, لذلك تعتبر أيضاً كسلاسل فرعية.

للوصول إلى السلاسل الفرعية يتم استخدام الأقواس المربعة لأخذ شرائح من السلسلة مع ادلتها للحصول على السلسلة الفرعية. مثال-

#!/usr/bin/python 

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

تحديث السلاسل

يمكن تحديث السلسلة من خلال إعادة إسناد المتحولات إلى سلسلة اخرى. يمكن أن تكون القيمة الجديدة مرتبطة بالقيمة السابقة أو مرتبطة بسلسلة مختلفة كلياً. مثال-

#!/usr/bin/python 

var1='Hello World!' 

print"Updated String :- ", 

var1[:6]+'Python'

فتظهر النتيجة التالية

Updated String :-  Hello Python

أحرف الهروب

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

التدوين المائل الحرف السداسي عشر الوصف
\a 0x07 جرس أو تنبيه
\b 0x08 مسافة للخلف
\cx التحكم x
\C-x الهرب
\e 0x1b تغذية الصيغة
\f 0x0c التحكم – ميتا x
\M-\C-x سطر جديد
\n 0x0a تدوين ثماني حيث n بحدود 0.7
\nnn إرجاع
\r 0x0d فراغ
\s 0x20 تبويب
\t 0x09 تبويب عمودي
\v 0x0b حرف x
\x تدوين ست عشري حيث n في المجال 0.9a.f,  أو  A.F
\xnn

 

المشغلات الخاصة بالسلاسل

بفرض متحول السلسلة a يمثل ‘Hello’ والمتحول b يمثل ‘Python’ عندها-

المشغل الوصف مثال
+ سلسلة – تضيف قيماً إلى احد جانبي المشغل a + b سوف ينتج HelloPython
* التكرار- تنشئ سلاسل جديدة وعدة نسخ للسلسلة نفسها a*2 سوف ينتج HelloHello
[] اقتطاع- تعطي الحرف من الدليل المعطى a[1] سوف ينتج e
[ : ] الاقتطاع ضمن مجال – تعطي الحروف من المجال المعطى a[1:4] سوف ينتج ell
in العضوية – تعطي النتيجة صح إذا كان الحرف موجود في السلسلة المعطاة H في a سوف ينتج 1
not in العضوية – تعطي النتيجة صح إذا كان الحرف غير موجود في السلسلة المعطاة M ليست في a سوف ينتج 1
r/R السلسلة الخام- تلغي المعنى الحرف لأحرف الهرب. البناء الرياضي للسلاسل الخام نفسه للسلاسل الطبيعية مع استثناء في مشغل السلسلة الخام. الحرف r الذي يسبق إشارات التنصيص. يمكن أن يكون “r” حرف صغير (r) أو حرف كبير (R) ويجب أن يتوضع قبل إشارة التنصيص الأولى طباعة r’\n’تطبع \n وطباعة R’\n’ تطبع \n .
% الشكل – تنجز شكل السلسلة انظر الفقرات التالية

 

مشغل تشكيل السلسلة

هذا المشغل فريد من نوعه بالنسبة للسلاسل وتم تصميمه لحزمة من التوابع الموجودة والعائدة لعائلة التوابع printf() المستخدمة في لغة البرمجة c .

مثال

#!/usr/bin/python 

print"My name is %s and weight is %d kg!"%('Zara',21)

فتظهر النتيجة التالية

My name is Zara and weight is 21 kg!

يبين الجدول التالي مجموعة الرموز التي يمكن استخدامها مع % –

رمز الشكل التحويل
%c حرف
%s تحويل السلسلة باستخدام str() قبل التشكيل
%i عدد صحيح عشري مدخل
%d عدد صحيح عشري مدخل
%u عدد صحيح عشري غير مدخل
%o عدد صحيح ثماني
%x عدد صحيح ست عشري (الأحرف الصغيرة)
%X عدد صحيح ست عشري (الأحرف الكبيرة)
%e تدوين الأس (حالة الحرف الصغير ‘e’)
%E تدوين الأس (حالة الحرف الصغير ‘E’)
%f عدد حقيقي بالفاصلة العائمة
%g الأقصر من %f  و  %e
%G الأقصر من %f   و %E

 

يبين الجدول التالي الرموز والتوابع الأخرى:

الرمز الوظيفة
* تحدد العرض أو الدقة
الفراغ الأيسر
+ تظهر الإشارة
<sp> تترك مسافة فراغ قبل العدد الموجب
# تضيف الصفر الثماني ( ‘0’ ) أو السداسي عشري ‘0x’ أو 0X’ اعتماداً على الرمز المستخدم ‘X’ أو ‘x’
0 البداية من اليسار بالأصفار عوضاً عن الفراغ
% ‘%%’ تترك حرفاً واحداً ‘%’
(var) متحول خرائطي
m.n. m تعبر عن العرض الكلي الأصغر و n تعبر الأرقام التي يتم عرضها بعد الفاصلة العشرية.

 

الاقتباسات الثلاثية

تستخدم للسماح للسلاسل بشغل عدة أسطر وتتضمن حرفياً NEWLINEs و TABs وأية أحرف خاصة أخرى.

يتكون البناء الرياضي للاقتباس الثلاثي من تتابع عدة اقتباسات مفردة أو مزدوجة.

#!/usr/bin/python 

para_str="""this is a long string that is made up of
several lines and non-printable characters such as TAB ( \t ) and they will show up that way when 
displayed.NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up."""

printpara_str;

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

this is a long string that is made up of several lines and non-printable characters such as TAB() and they will show up that way when displayed.NEWLINEs within thestring, whether explicitly given likethis within the brackets[],or just a NEWLINE withinthe variable assignment will also show up.

لا تعامل السلاسل الخام إشارة (/) كحرف خاص أبداً. كل حرف يوضع في السلسلة الخام يبقى كما كتب من قبل المستخدم.

#!/usr/bin/python 

print'C:\\nowhere'

فتظهر النتيجة التالية

nowhere

لنستخدم السلسلة الخام ولنضع التعبير r’expression’كالتالي –

#!/usr/bin/python 

printr'C:\\nowhere'

عندها تظهر النتيجة التالية

nowhere

السلاسل الحرفية الموحدة

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

#!/usr/bin/python 

printu'Hello, world!'

عندها تظهر النتيجة التالية

Hello, world!

يتضح هنا أن السلاسل الحرفية الموحدة تستخدم السابقة u مثل السلاسل الخام التي تستخدم السابقة r .

طرق السلسلة المدمجة

تتضمن لغة البرمجة Python الطرق المدمجة التالية للتحكم بالسلسلة:

الرقم التسلسلي الطريقة والوصف
1 capitalize() تستخدم لتكبير الحرف الأول من السلسلة.
2 center(width, fillchar) تعيد السلسلة ذات الفراغ مع السلسلة الأصلية أعمدة العرض الكلية.
3 count(str, beg= 0,end=len(string)) تقوم بعد كم من المرات تكررت الـ str في السلسلة أو السلسلة  الفرعية إذا تم إعطاء مؤشر البداية والنهاية.
4 decode(encoding=’UTF-8′,errors=’strict’)فك السلسلة باستخدام الترميز المسجل. الترميز الافتراضي لترميز السلسلة الافتراضية.
5 encode(encoding=’UTF-8′,errors=’strict’) تعطي النسخة المشفرة للسلسلة وفي حالة الخطأ فإنها افتراضياً ترفع قيمة الخطأ مالم يرفق الخطأ مع رسالة “تجاهل” أو “استبدال”
6 endswith(suffix, beg=0, end=len(string)) تحدد فيما إذا كانت السلسلة أو السلسلة الفرعية للسلسلة (إذا اعطي مؤشر بداية ونهاية السلسلة) تنتهي بلاحقة. تعطي نتيجة صح إذا تحقق ذلك والتعطي نتيجة خطأ إذا كان العكس.
7 expandtabs(tabsize=8) تستخدم لتوسيع علامات التبويب في السلسلة إلى فراغات متعددة وبشكل افتراضي 8  فراغات لكل علامة تبويب إذا لم يكن حجم علامة التبويب محدداً مسبقاً.
8 find(str, beg=0 end=len(string)) تحدد إذا كانت str تحدث في السلسلة أو في السلسلة الفرعية للسلسلة إذا كان مؤشر البداية والنهاية محدداً حيث تعطي المؤشر في حال تحقق ذلك وتعطي -1 في حال العكس.
9 index(str, beg=0, end=len(string)) مماثل للتابع find() لكنها تحدث استثناءً إذا لم يوجد str .
10 isalnum() تعطي النتيجة صح إذا كانت السلسلة تتضمن حرف واحد وكل الحروف هي حروف رقمية وتعطي النتيجة خطأ في حالة العكس.
11 isalpha()تعطي النتيجة صح إذا كانت السلسلة تتضمن حرف واحد وكل الحروف هي حروف أبجدية وتعطي النتيجة خطأ في حالة العكس.
12 isdigit() تعطي النتيجة صح إذا احتوت السلسلة على أرقام فقط والنتيجة خطأ في حال عكس ذلك.
13 islower() تعطي النتيجة صح إذا كانت السلسلة تحوي على الأقل حرف مغطى واحد وكل الحروف المغطاة الأخرى بالحرف الصغير ويعطي النتيجة خطأ إذا كان العكس.

 

14 isnumeric() تعطي النتيجة صح إذا كانت السلسلة الموحدة تحوي أحرف رقمية فقط والنتيجة خطأ في حال العكس.
15 isspace() تعطي النتيجة صح إذا كانت السلسلة تحوي فقط مسافات بيضاء والنتيجة خطأ في حال العكس.
16 istitle() تعطي النتيجة صح إذا كانت السلسلة titlecased”” وتعطي النتيجة خطأ في حال العكس.
17 isupper() تعطي النتيجة صح إذا كانت السلسلة تحوي على الأقل حرف مغطى واحد وكل الحروف المغطاة الأخرى بالحرف الكبير ويعطي النتيجة خطأ إذا كان العكس.
18 join(seq)تدمج سلسلة من العناصر المتتالية في سلسلة مع سلسلة فاصلة.
19 len(string) تعطي طول السلسلة.
20 تعيد السلسلة الحاوية على فراغات مع السلسلة الأصلية مع إزاحة تعادل عرض الأعمدة الكلي . ljust(width[, fillchar])

 

21 lower() تحول كل الحروف الكبيرة في السلسلة إلى حروف صغيرة.
22 lstrip() تزيل كل المساحات البيضاء من السلسلة.
23 maketrans() تعطي جدول الترجمة ليستخدم في تابع الترجمة.
24 max(str) تعطي الحرف الأبجدي الأعلى من السلسلة.
25 min(str) تعطي الحرف الأبجدي الأدنى من السلسلة.
26 replace(old, new [, max])

يستبدل كل الإجراءات القديمة في السلسلة بالجديدة أو بالأكثر تكراراً

 

27 rfind(str, beg=0,end=len(string))مماثل للتابع find() لكن يتم البحث بشكل استرجاعي في السلسلة.
28 rindex( str, beg=0, end=len(string)) مماثلة للتابع index()لكنها تبحث بشكل خلفي في السلسلة.
29 rjust(width,[, fillchar])

تعطي السلسلة الحاوية على فراغات مع السلسلة الأصلية المزاحة نحو اليمين بمقدار العرض الكلي للأعمدة.

30 rstrip() تزيل كافة المسافات البيضاء الزائدة من السلسلة.
31 split(str=””, num=string.count(str))

تحدث شرائح في السلسلة وفق ال str المحدد (إذا لم يتم تحديد الفراغ) وتعطي قائمة بالسلاسل الفرعية, يتم اقتطاعالشرائح بأكبر عدد ممكن معطى.

32 splitlines( num=string.count(‘\n’))

تحدث شرائح في السلسلة على شكل أسطر جديدة وتعطي قائمة بكل سطر مع الأسطر الجديدة المحذوفة.

33 startswith(str, beg=0,end=len(string))

تحدد إذا كانت السلسلة أو السلسلة الفرعية تبدأ بالسلسلة الفرعية str , تعطي النتيجة صح إذا تحقق ذلك والنتيجة خطأ في حال عكس ذلك.

34 strip([chars]) تنجز كلا التعليمتين على السلسلة lstrip()  و rstrip()
35 swapcase()يعكس حالة كل الحروف في السلسلة.
36 title() تعطي نسخة السلسلة “titlecased” لذلك تكون كل الكلمات بحرف كبير والبقية حرف صغير.
37 translate(table, deletechars=””) تترجم السلسلة وفقاً لجدول الترجمة. Str (256) حرف. إزالتها تتم باستخدام السلسلة del.
38 upper() تحول الحروف الصغيرة في السلسلة إلى حروف كبيرة.
39 zfill (width)

ترجع السلسلة الأصلية مع الأصفار إلى ما مجموعه أحرف العرض. مخصصة للأرقام . zfill() تحتفظ بأية علامة (أقلها صفراً)

40 isdecimal()

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