المتغيرات النصية 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


أحرف الهروب


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



















































































التدوين المائلالحرف السداسي عشرالوصف
\a0x07جرس أو تنبيه
\b0x08مسافة للخلف
\cxالتحكم x
\C-xالهرب
\e0x1bتغذية الصيغة
\f0x0cالتحكم – ميتا x
\M-\C-xسطر جديد
\n0x0aتدوين ثماني حيث n بحدود 0.7
\nnnإرجاع
\r0x0dفراغ
\s0x20تبويب
\t0x09تبويب عمودي
\v0x0bحرف 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 الطرق المدمجة التالية للتحكم بالسلسلة:








































































































































































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

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

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

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

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

تعطي السلسلة الحاوية على فراغات مع السلسلة الأصلية المزاحة نحو اليمين بمقدار العرض الكلي للأعمدة.
30rstrip() تزيل كافة المسافات البيضاء الزائدة من السلسلة.
31split(str="", num=string.count(str))

تحدث شرائح في السلسلة وفق ال str المحدد (إذا لم يتم تحديد الفراغ) وتعطي قائمة بالسلاسل الفرعية, يتم اقتطاعالشرائح بأكبر عدد ممكن معطى.
32splitlines( num=string.count('\n'))

تحدث شرائح في السلسلة على شكل أسطر جديدة وتعطي قائمة بكل سطر مع الأسطر الجديدة المحذوفة.
33startswith(str, beg=0,end=len(string))

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

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

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

ليست هناك تعليقات:

إرسال تعليق