Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

بايثونالتعامل مع النصوص

  • مفهوم النصوص
  • الوصول لأحرف النص
  • تجزيء النص في بايثون بواسطة العامل []
  • الرموز التي من خلالها نعرف نهاية السطر في بايثون
  • الدوال الجاهزة في الكلاس str للتعامل مع النصوص في بايثون
  • دوال البحث الموجودة في الكلاس str في بايثون
  • دوال التجزيء الموجودة في الكلاس str في بايثون
  • دوال التبديل الموجودة في الكلاس str في بايثون
  • دوال المعالجة الموجودة في الكلاس str في بايثون
  • دوال المقارنة الموجودة في الكلاس str في بايثون
  • العوامل التي تستخدم للتعامل مع النصوص

مفهوم النصوص

في عالم البرمجة, نقول للنص "String" سواء كان يتألف من حرف واحد, كلمة, جملة أو نص كبير جداً.
و من هذا المنطلق نستنتج أن النص عبارة عن سلسلة من الأحرف ليس لها حجم محدد.

في بايثون تم إنشاء الكلاس أو النوع str خصيصاً لتخزين القيم النصية.



معلومة تقنية

النوع str يعتمد على الترميز Unicode و هذا يعني أنك لن تواجه أي مشكلة عند التعامل مع نصوص عربية, إنجليزية, فرنسية إلخ..

المتغيرات النصية في بايثون ( التي نوعها str ) تعتبر Immutable. و هذا يعني أنك عندما تقوم بتعريف أي متغير تخزن فيه نص, فإن هذه النص سيحجز له مكان في الذاكرة مهما كان حجمه. و إذا قمت بإعطاء قيمة جديدة لهذا المتغير فإنه سيتم حذف القيمة القديمة من الذاكرة و إنشاء مكان جديد في الذاكرة و وضع القيمة الجديدة فيه لأنه لا يمكن تعديل نفس القيمة في نفس المكان في الذاكرة.



طريقة تعريف str

لتعريف نص في بايثون نستخدم الرمز ' أو الرمز " أو الرمز """.


هل يوجد فرق بين هذه الرموز؟

بالنسبة للرمز ' و الرمز " فإنه لا يوجد أي فرق بينهما. و يمكن إستخدام أي واحد منهما لتعريف نص يتألف من سطر واحد.
بالنسبة للرمز ''' و الرمز """ فإنه لا يوجد أي فرق بينهما. و يمكن إستخدام أي واحد منهما لتعريف نص كبير يتألف من عدة أسطر.



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

المثال الأول

Test.py
# هنا قمنا بتعريف ثلاث متغيرات تحتوي على قيم نصية
name = 'Mhamad'
job = "Programmer"
message = '''This string that will span across multiple lines. No need to use newline characters for the next lines.
The end of lines within this string is counted as a newline when printed.'''
# هنا قمنا بعرض قيم المتغيرات النصية بأسلوب مرتب
print('Name: ', name)
print('Job: ', job)
print('Message: ', message)
# هنا قمنا بتعريف ثلاث متغيرات تحتوي على قيم نصية name = 'Mhamad' job = "Programmer" message = '''This string that will span across multiple lines. No need to use newline characters for the next lines. The end of lines within this string is counted as a newline when printed.''' # هنا قمنا بعرض قيم المتغيرات النصية بأسلوب مرتب print('Name: ', name) print('Job: ', job) print('Message: ', message)

سنحصل على النتيجة التالية عند التشغيل.

Name: Mhamad
Job: Programmer
Message: This string that will span across multiple lines. No need to use newline characters for the next lines.
The end of lines within this string is counted as a newline when printed.

في المثال التالي قمنا بتعريف نص يحتوي على نفس الرموز التي تستخدم لتعريف النصوص.

المثال الثاني

Test.py
# يحتوي على قيمة نصية text هنا قمنا بتعريف متغير إسمه
text = """In this line we print 'single quotations'
In this line we print "double quotations" """
# text هنا قمنا بعرض قيمة المتغير
print(text)
# يحتوي على قيمة نصية text هنا قمنا بتعريف متغير إسمه text = """In this line we print 'single quotations' In this line we print "double quotations" """ # text هنا قمنا بعرض قيمة المتغير print(text)

سنحصل على النتيجة التالية عند التشغيل.

In this line we print 'single quotations'
In this line we print "double quotations"


مفهوم الـ Concatenation

Concatenation تعني وضع سلسلة من النصوص بجانب بعضها لعرضها كنص واحد. و هذا الأمر ستحتاجه في أي تطبيق.

فمثلاً, في البرامج أو المواقع التي تستخدمها تلاحظ أنه عند إنشاء حساب جديد يطلب منك أن تدخل إسمك على مرحلتين كالتالي:
- الإسم ( First Name ).
- إسم العائلة ( Last Name ).

بعد أن تنشئ حسابك تلاحظ أنه قام بعرض إسمك الكامل ( الإسم + إسم العائلة ).
عند وضع الإسمين بجانب بعضهما و كأنهما نص واحد يكون المبرمج فعلياً قد قام بدمجهما فقط و ليس إعادة كتابتهما من جديد.


في المثال التالي سنقوم بتعريف المتغير first_name لنضع فيه الإسم, و المتغير last_name لنضع فيه إسم العائلة, و المتغير full_name لنضع فيه الإسم و إسم العائلة.

مثال

Test.py
# و وضعنا فيه نص يمثل الإسم first_name هنا قمنا بإنشاء المتغير
first_name = 'Mhamad'
# و وضعنا فيه نص يمثل إسم العائلة last_name هنا قمنا بإنشاء المتغير
last_name = 'Harmush'
# و أضفنا بينهما مسافة فارغة last_name و إسم العائلة الموجود في المتغير first_name و وضعنا فيه الإسم الموجود في المتغير full_name هنا قمنا بإنشاء المتغير
full_name = first_name + ' ' + last_name
# و يالتالي سيتم عرض الإسم الكامل الذي قمنا بدمجه و وضعه فيه full_name هنا عرضنا قيمة المتغير
print(full_name)
# و وضعنا فيه نص يمثل الإسم first_name هنا قمنا بإنشاء المتغير first_name = 'Mhamad' # و وضعنا فيه نص يمثل إسم العائلة last_name هنا قمنا بإنشاء المتغير last_name = 'Harmush' # و أضفنا بينهما مسافة فارغة last_name و إسم العائلة الموجود في المتغير first_name و وضعنا فيه الإسم الموجود في المتغير full_name هنا قمنا بإنشاء المتغير full_name = first_name + ' ' + last_name # و يالتالي سيتم عرض الإسم الكامل الذي قمنا بدمجه و وضعه فيه full_name هنا عرضنا قيمة المتغير print(full_name)

سنحصل على النتيجة التالية عند التشغيل.

Mhamad Harmush


طرق دمج النصوص

يمكنك تطبيق الـ Concatenation في بايثون بطريقتين:

  • بإستخدام العامل +.
  • أو باستخدام الدالة join() التي تعطيك طرق متقدمة أكثر لدمج النصوص. ستجد شرح مفصل لهذه الدالة لاحقاً في هذا الدرس.


الدمج التلقائي للنصوص

في حال وضعت قيمتين نصيّتين بجانب بعضهما و وضعت بينهما مسافة فارغة ( أو عدة مسافات فارغة ) فإن مترجم بايثون سيقوم بدمجهمها لك بشكل تلقائي.

مثال

Test.py
s = 'Mhamad' ' Harmush' # s هنا قمنا بوضع قيمتين نصيّتين بجانب بعضهما و قمنا بتخزينهما في المتغير
print(s) # لنتأكد من أنه قد تم دمج النصين بشكل صحيح s3 هنا عرضنا قيمة المتغير
s = 'Mhamad' ' Harmush' # s هنا قمنا بوضع قيمتين نصيّتين بجانب بعضهما و قمنا بتخزينهما في المتغير print(s) # لنتأكد من أنه قد تم دمج النصين بشكل صحيح s3 هنا عرضنا قيمة المتغير

سنحصل على النتيجة التالية عند التشغيل.

Mhamad Harmush

الوصول لأحرف النص

لنفترض أننا قمنا بتعريف متغير إسمه s و قيمته النص 'welcome to harmash.com'

مثال

s = 'welcome to harmash.com'
s = 'welcome to harmash.com'

سيتم تخزين نص المتغير s في الذاكرة حرفاً حرفاً و بالترتيب كما في هذه الصورة التالية.



طرق الوصول لأحرف النص

في حال أردت الوصول لأحرف هذا النص, فأمامك خيارين:

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


الوصول لأحرف النص من اليسار إلى اليمين

في حال أردت المرور على أحرف هذا النص من اليسار إلى اليمين, سيتم إعتبار أن الخانات قد تم ترقيمها إبتداءاً من الرقم 0 كالتالي.
معلومة: طريقة ترقيم الخانات تسمى (Forward Indexing).


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

مثال

Test.py
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه
s = 'welcome to harmash.com'
# و بدأنا من اليسار s هنا قمنا بطباعة أول 7 أحرف موجودة في المتغير
print(s[0] + s[1] + s[2] + s[3] + s[4] + s[5] + s[6])
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه s = 'welcome to harmash.com' # و بدأنا من اليسار s هنا قمنا بطباعة أول 7 أحرف موجودة في المتغير print(s[0] + s[1] + s[2] + s[3] + s[4] + s[5] + s[6])

سنحصل على النتيجة التالية عند التشغيل.

welcome


الوصول لأحرف النص من اليمين إلى اليسار

في حال أردت المرور على أحرف هذا النص من اليمين إلى اليسار, سيتم إعتبار أن الخانات قد تم ترقيمها إبتداءاً من الرقم 1- كالتالي.
معلومة: طريقة ترقيم الخانات تسمى (Backward Indexing).


في المثال التالي سنقوم بطباعة محتوى آخر 3 خانات إبتداءاً من الجهة اليمنى و بالتالي سنحصل على الكلمة com.

مثال

Test.py
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه
s = 'welcome to harmash.com'
# و بدأنا من اليمين s هنا قمنا بطباعة آخر 3 أحرف موجودة في المتغير
print(s[-3] + s[-2] + s[-1])
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه s = 'welcome to harmash.com' # و بدأنا من اليمين s هنا قمنا بطباعة آخر 3 أحرف موجودة في المتغير print(s[-3] + s[-2] + s[-1])

سنحصل على النتيجة التالية عند التشغيل.

com


معرفة عدد أحرف النص بواسطة الدالة len(s)

لمعرفة عدد أحرف أي نص نقوم باستدعاء الدالة len() و من ثم نمرر لها النص مكان الباراميتر s.
ملاحظة: المسافات الفارغة ( White Spaces ) أيضاً يتم حسابها.

مثال

Test.py
s = 'welcome to harmash.com' # s هنا قمنا بتعريف متغير نصي إسمه
print('Length of s =', len(s)) # len() الذي سترجعه الدالة s هنا قمنا بطباعة عدد أحرف (خانات) المتغير
s = 'welcome to harmash.com' # s هنا قمنا بتعريف متغير نصي إسمه print('Length of s =', len(s)) # len() الذي سترجعه الدالة s هنا قمنا بطباعة عدد أحرف (خانات) المتغير

سنحصل على النتيجة التالية عند التشغيل.

Length of s = 22


مصطلحات تقنية

  • عدد أحرف النص يسمى Length.
  • رقم الخانة يسمى Index.
  • أرقام الخانات تسمى Indices.
  • إذا قمنا بأخذ جزء من النص. الجزء المأخوذ يسمى Substring.

أنت كمبرمج يمكنك إستغلال أرقام الخانات لتصل لمحتوى النص كالتالي.

تجزيء النص في بايثون بواسطة العامل []

لأخذ جزء من أي نص نعتمد على أرقام الخانات التي يتم إعطاءها لكل حرف في النص.


في المثال التالي سنقوم بعرض جزء محدد من النص الذي يحتويه المتغير s.
فعلياً, سنحدد أننا نريد عرض جميع الأحرف الموجودة ابتداءاً من الخانة رقم 11 وصولاً إلى ما قبل الخانة رقم 18.

المثال الأول

Test.py
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه
s = 'welcome to harmash.com'
# s هنا قمنا بطباعة جميع الأحرف الموجودة إبتداءاً من الخانة رقم 11 وصولاً إلى الخانة الموجودة ما قبل الخانة 18 في المتغير
print(s[11:18])
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه s = 'welcome to harmash.com' # s هنا قمنا بطباعة جميع الأحرف الموجودة إبتداءاً من الخانة رقم 11 وصولاً إلى الخانة الموجودة ما قبل الخانة 18 في المتغير print(s[11:18])

سنحصل على النتيجة التالية عند التشغيل.

harmash

في المثال التالي سنقوم بعرض جزء غير محدد من النص الذي يحتويه المتغير s.
فعلياً, سنحدد أننا نريد عرض جميع الأحرف الموجودة ابتداءاً من الخانة رقم 11 وصولاً إلى آخر خانة.

المثال الثاني

Test.py
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه
s = 'welcome to harmash.com'
# s هنا قمنا بطباعة جميع الأحرف الموجودة إبتداءاً من الخانة رقم 11 وصولاً إلى آخر خانة موجودة في المتغير
print(s[11:])
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه s = 'welcome to harmash.com' # s هنا قمنا بطباعة جميع الأحرف الموجودة إبتداءاً من الخانة رقم 11 وصولاً إلى آخر خانة موجودة في المتغير print(s[11:])

سنحصل على النتيجة التالية عند التشغيل.

harmash.com

في المثال التالي سنقوم بعرض جزء غير محدد من النص الذي يحتويه المتغير s.
فعلياً, سنحدد أننا نريد عرض جميع الأحرف الموجودة ابتداءاً من الخانة الأولى وصولاً إلى ما قبل الخانة رقم 11.

المثال الثالث

Test.py
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه
s = 'welcome to harmash.com'
# s هنا قمنا بطباعة جميع الأحرف الموجودة إبتداءاً من الخانة الأولى وصولاً إلى ما قبل الخانة رقم 11 في المتغير
print(s[:11])
# يحتوي على نص s هنا قمنا بتعريف متغير إسمه s = 'welcome to harmash.com' # s هنا قمنا بطباعة جميع الأحرف الموجودة إبتداءاً من الخانة الأولى وصولاً إلى ما قبل الخانة رقم 11 في المتغير print(s[:11])

سنحصل على النتيجة التالية عند التشغيل.

welcome to

الرموز التي من خلالها نعرف نهاية السطر في بايثون

الرمز الذي يتم وضعه للإشارة لنهاية السطر يختلف باختلاف أنواع التقنيات المستخدمة لحفظ البيانات التي نتعامل معها.
الرموز التالية كلها تعني نهاية السطر.

الرمز معناه بالإنجليزية
\n Line Feed
\r Carriage Return
\r\n Carriage Return + Line Feed
\v or \x0b Line Tabulation
\f or \x0c Form Feed
\x1c File Separator
\x1d Group Separator
\x1e Record Separator
\x85 Next Line (C1 Control Code)
\u2028 Line Separator
\u2029 Paragraph Separator

في المثال التالي سنقوم بتخزين نص في المتغير s و ضعنا فيه ثلاث مؤشرات \n لجعل النص يظهر على ثلاث أسطر عند عرضه.

مثال

Test.py
# \n يحتوي على 3 موشرات s هنا قمنا بتعريف متغير نصي إسمه
s = 'This is fist line.\nThis is second line.\nThis is third line.'
# و الذي سيظهر على 3 أسطر s هنا قمنا بطباعة النص الموجود في المتغير
print(s)
# \n يحتوي على 3 موشرات s هنا قمنا بتعريف متغير نصي إسمه s = 'This is fist line.\nThis is second line.\nThis is third line.' # و الذي سيظهر على 3 أسطر s هنا قمنا بطباعة النص الموجود في المتغير print(s)

سنحصل على النتيجة التالية عند التشغيل.

This is fist line.
This is second line.
This is third line.

لاحظ أن الرمز \n لم يظهر في نهاية كل سطر, بل أدى فقط للنزول على السطر.


عندما تكون تستخدم هاتفك أو حاسوبك تقوم في العادة بالنقر على الزر Enter كلما أردت أن تنزل على سطر جديد.
الذي عليك معرفته كمبرمج هو أن سبب النزول على سطر جديد هو أنه قد تم إضافة رمز خاص بدون علمك في المكان الذي نقرت فيه على الزر Enter للإشارة إلى نهاية السطر. الرمز الذي يضافة يقال له مؤشر نهاية السطر ( End Of Line Flag ).

الدوال الجاهزة في الكلاس str للتعامل مع النصوص في بايثون

الكلاس str هو كلاس جاهز في بايثون, يحتوي على دوال كثيرة للتعامل مع محتوى النصوص, سواء للبحث عن أحرف أو كلمات أو جمل, تجزيء النص, تغيير الـ Case للأحرف, دمج النصوص إلخ..


سنقسم دوال الكلاس str إلى 5 فئات أساسية:

  • دوال للبحث (Searching).
  • دوال للتجزيء (Substring).
  • دوال للتبديل (Replacing).
  • دوال للمقارنة (Comparison).
  • دوال للمعالجة (Manipulation).


معلومة تقنية

عند التعامل مع أي دالة من دول الكلاس str, سواء كان شرح هذه الدالة يقول أن الدالة تبدأ من أول النص إلى آخره أو تبدأ من نهايته إلى أوله. تخيل دائماً أن خانات النص قد تم ترقيمها هكذا.



تذكر

الكلاس str يعتبر Immutable class و هذا يعني أنك عندما تستدعي أي دالة على نص, فلن تعدل محتوى النص الأصلي الذي قام باستدعائها, بل سترجع نسخة معدلة من هذا النص و سيبقى النص الأصلي كما هو.

دوال البحث الموجودة في الكلاس str في بايثون

إسم الدالة مع تعريفها
1 count(sub[, start[, end]]) ترجع رقم يمثل عدد المرات التي فيها إيجاد النص الذي تم تمريره مكان الباراميتر sub في النص الذي قام باستدعائها.
شاهد المثال
2 find(sub[, start[, end]]) تبحث في النص الذي قام باستدعائها عن رقم أول خانة تم عندها إيجاد نفس النص أو الحرف الذي نمرره لها مكان الباراميتر sub و ترجعه.
في حال لم يتم العثور على النص المراد البحث عنه ترجع 1- .
شاهد المثال
3 rfind(sub[, start[, end]]) الفرق بينها و بين الدالة find() أنها تبدأ عملية البحث من آخر خانة في النص الذي قام باستدعائها إلى أول خانة فيه.
شاهد المثال
4 index(sub[, start[, end]]) تبحث في النص الذي قام باستدعائها عن رقم أول خانة تم عندها إيجاد نفس النص أو الحرف الذي نمرره لها مكان الباراميتر sub و ترجعه.
في حال لم يتم العثور على النص المراد البحث عنه ترمي الإستثناء ValueError.
شاهد المثال
5 rindex(sub[, start[, end]]) الفرق بينها و بين الدالة index() أنها تبدأ عملية البحث من آخر خانة في النص الذي قام باستدعائها إلى أول خانة فيه.
شاهد المثال

دوال التجزيء الموجودة في الكلاس str في بايثون

إسم الدالة مع تعريفها
1 split(sep=None, maxsplit=-1) ترجع نسخة من النص الذي قام باستدعائها مقسمة على شكل مصفوفة نصوص.
مكان الباراميتر sep نمرر نص يحدد الطريقة التي سيتم على أساسها تقسيم النص و وضع كل قسم فيه في عنصر واحد بداخل المصفوفة.
شاهد المثال
2 splitlines([keepends]) ترجع نسخة من النص الذي قام باستدعائها مقسمة على شكل مصفوفة نصوص. كل عنصر في هذه المصفوفة عبارة عن سطر موجود في النص.
مكان الباراميتر keepends يمكنك تمرير القيمة True لإبقاء الرموز التي من خلالها عرف مترجم بايثون كيف يفصل الأسطر عن بعضها و من ثم يضيف كل سطر كعنصر في المصفوفة.
شاهد المثال

دوال التبديل الموجودة في الكلاس str في بايثون

إسم الدالة مع تعريفها
1 replace(old, new [, count]) ترجع نسخة من النص الذي قام باستدعائها مع تبديل كل جزئية فيها تتطابق مع النص نمرره لها مكان الباراميتر old بالنص الذي نمرره لها مكان الباراميتر new.
شاهد المثال
2 maketrans(x[, y[, z]]) تستخدم لبناء قاموس يمكن إستخدامه لتبديل أحرف النص بأحرف أخرى.
ملاحظة: لتطبيق القاموس الذي قمت بتجهيزه على أي نص, تحتاج استخدام الدالة translate().
شاهد المثال
3 translate(table) ترجع نسخة من النص الذي قام باستدعائها مع تبديل بعض أحرف هذه النسخة بأحرف أخرى أو حذفها بالإعتماد على القاموس الذي نمرره لها مكان الباراميتر table.
ملاحظة: القاموس الذي نمرره لهذه الدالة نبنيه بالأساس بواسطة الدالة translate().
شاهد المثال

دوال المعالجة الموجودة في الكلاس str في بايثون

إسم الدالة مع تعريفها
1 upper(s) ترجع نسخة من النص الذي نمرره لها عند استدعاءها مكان الباراميتر s كل أحرفه كبيرة.
شاهد المثال
2 lower(s) ترجع نسخة من النص الذي نمرره لها عند استدعاءها مكان الباراميتر s كل أحرفه صغيرة.
شاهد المثال
3 swapcase() ترجع نسخة من النص الذي قام باستدعائها مع قلب الأحرف الكبيرة فيها لأحرف صغيرة و الأحرف الصغيرة فيها لأحرف كبيرة.
شاهد المثال
4 capitalize(s) ترجع نسخة من النص الذي نمرره لها عند استدعاءها مكان الباراميتر s مع تحويل أول حرف فيه لحرف كبير.
إذاً, هذه الدالة مفيدة في حال كنت تريد أن تبدأ أي جملة تريد عرضها بحرف كبير.
شاهد المثال
5 title(s) ترجع نسخة من النص الذي نمرره لها عند استدعاءها مكان الباراميتر s مع تحويل أول حرف من كل كلمة فيه لحرف كبير.
إذاً, هذه الدالة مفيدة في حال كنت ستعرض عنوان, لأنه في العادة يتم وضع أول حرف من كل كلمة في العنوان كحرف كبير.
شاهد المثال
6 join(iterable) ترجع نص جديد يمثل النص الذي قام باستدعائها مدمجاً بالنص أو بمصفوفة النصوص التي نمرره لها مكان الباراميتر iterable.
شاهد المثال
7 center(width[, fillchar]) تستخدم لعرض النص الذي قام باستدعائها في وسط السطر, في حال لم يتعدى الطول الذي نحدده للسطر.
فعلياً, ترجع نسخة من النص و تضيف مسافات فارغة حوله عند الحاجة لجعله يظهر كأنه في المنتصف.
  • مكان الباراميتر width نمرر رقم يحدد طول السطر, عندها في حال كان طول النص أصغر من طول السطر سيتم عرضه في وسطه من خلال إضافة مسافات فارغة قبله و بعده.
  • fillchar هو باراميتر إختياري يمكنك أن تمرر مكانه أي حرف حتى يتم وضعه بدل وضع مسافات فارغة.
شاهد المثال
8 expandtabs(tabsize=8) ترجع نسخة من النص الذي قام باستدعائها مع مضاعفة حجم المسافات الفارغة ( Tab Spaces ) التي تم إضافتها في النص بواسطة الرمز \t.
إفتراضياً, الرمز \t يمثل 4 مسافات فارغة عند عرض النص, و لكن في النسخة التي ترجعها الدالة expandtabs() سيتم تحويل كل رمز \t إلى 8 مسافات فارغة ما لم تقم بتحديد عدد المسافات بنفسك.
شاهد المثال
9 lstrip() ترجع نسخة من النص الذي قام باستدعائها مع إزالة أي مسافة فارغة موجودة في بدايته.
شاهد المثال
10 rstrip() ترجع نسخة من النص الذي قام باستدعائها مع إزالة أي مسافة فارغة موجودة في نهايته.
شاهد المثال
11 strip([chars]) ترجع نسخة من النص الذي قام باستدعائها مع حذف أي مسافة فارغة موجودة في بدايته و نهايته.
إفتراضياً, هذه الدالة تقوم بحذف المسافات الفارغة الموجودة في أول أو آخر النص لكن إن أردت مسح أحرف معينة ( بدلاً من المسافات الفارغة ) في حال وجودها في بداية و نهاية النص, يمكنك تمرير هذه الأحرف مكان الباراميتر chars.
شاهد المثال
12 ljust(width[, fillchar]) ترجع نسخة من النص الذي قام باستدعائها مع إضافة مسافات فارغة في نهايته إذا تجاوز عدد أحرفه العدد الذي نمرره مكان الباراميتر width.
و يمكنك تمرير أي حرف أو رمز مكان الباراميتر fillchar ليظهر بدلاً من المسافات الفارغة.
شاهد المثال
13 rjust(width[, fillchar]) ترجع نسخة من النص الذي قام باستدعائها مع إضافة مسافات فارغة في بدايته إذا تجاوز عدد أحرفه العدد الذي نمرره مكان الباراميتر width.
و يمكنك تمرير أي حرف أو رمز مكان الباراميتر fillchar ليظهر بدلاً من المسافات الفارغة.
شاهد المثال

دوال المقارنة الموجودة في الكلاس str في بايثون

إسم الدالة مع تعريفها
1 startswith(sub[, start[, end]]) تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يبدأ بنص معين أم لا.
مكان الباراميتر sub يمكنك تمرير نص عادي, أو مصفوفة نصوص نوعها tuple.
في حال كان نص الباراميتر sub ( أو نص أحد عناصره في حال كان عبارة عن مصفوفة ) موجود في بداية النص الذي قام باستدعائها سترجع True. غير ذلك ترجع False.

شاهد المثال
2 endswith(suffix[, start[, end]]) تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها ينتهي بنص معين أم لا.
مكان الباراميتر suffix يمكنك تمرير نص عادي, أو مصفوفة نصوص نوعها tuple.
في حال كان نص الباراميتر suffix ( أو نص أحد عناصره في حال كان عبارة عن مصفوفة ) موجود في نهاية النص الذي قام باستدعائها سترجع True. غير ذلك ترجع False.

شاهد المثال
3 isalpha() تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يحتوي على حرف أبجدي أو مجموعة أحرف أبجدية فقط أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
ملاحظة: إسم هذه الدالة مشتق من الكلمة "Alphabet" التي تعني أحرف أبجدية.
شاهد المثال
4 isnumeric() تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يحتوي على رقم أو مجموعة أرقام فقط أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
شاهد المثال
5 isdigit() تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يحتوي على رقم أو مجموعة أرقام فقط أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
ملاحظة: هذه الدالة لا تعتبر الرموز التي تمثل قيم رقمية مثل الرمز ½ كرقم و هذا هو الفرق بينها و بين الدالة isnumeric().
شاهد المثال
6 isalnum() تستخدم لمعرفة نوع أحرف النص الذي قام باستدعائها.
  • ترجع True في حال كان النص الذي قام باستدعائها يحتوي على أحرف أبجدية و أرقام فقط.
  • ترجع True في حال كان النص الذي قام باستدعائها يحتوي على أحرف أبجدية فقط.
  • ترجع True في حال كان النص الذي قام باستدعائها يحتوي على أرقام فقط.
  • ترجع True في حال كان النص الذي قام باستدعائها يحتوي على حرف أو رقم واحد فقط.
  • غير ذلك ترجع False.
ملاحظة: إسم هذه الدالة مشتق من الكلمة "Alphanumeric" التي تعني أحرف أبجدية و أرقام.
شاهد المثال
7 islower() تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يحتوي فقط على أحرف أبجدية صغيرة (Small Letters) فقط أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
شاهد المثال
8 isupper() تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يحتوي فقط على أحرف أبجدية كبيرة (Capital Letters) فقط أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
شاهد المثال
9 istitle() تستخدم لمعرفة ما إذا كان أول حرف من كل كلمة في النص الذي قام باستدعائها عبارة عن حرف كبير (Capital Letter) أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
شاهد المثال
10 isspace() تستخدم لمعرفة ما إذا كان النص الذي قام باستدعائها يحتوي على مسافة فارغة (White Space) أو عدة مسافات فارغة فقط أم لا.
ترجع True إن كان كذلك, غير ذلك ترجع False.
شاهد المثال

العوامل التي تستخدم للتعامل مع النصوص


العامل +

هذا العامل يستخدم لدمج نصّين أو أكثر و يرجعهم كنص جديد.

مثال

Test.py
s1 = 'Mhamad' # يتألف من كلمة واحدة s1 هنا قمنا بتعريف متغير نصي إسمه
s2 = 'Harmush' # يتألف من كلمة واحدة s2 هنا قمنا بتعريف متغير نصي إسمه
s3 = s1 + ' ' + s2 # s2 ثم وضعنا مسافة فارغة, ثم وضعنا النص الموجود في ,s1 هنا قمنا بتعريف متغير نصي وضعنا فيه النص الموجود في
print(s3) # s3 هنا قمنا بطباعة ما تم وضعه في المتغير
s1 = 'Mhamad' # يتألف من كلمة واحدة s1 هنا قمنا بتعريف متغير نصي إسمه s2 = 'Harmush' # يتألف من كلمة واحدة s2 هنا قمنا بتعريف متغير نصي إسمه s3 = s1 + ' ' + s2 # s2 ثم وضعنا مسافة فارغة, ثم وضعنا النص الموجود في ,s1 هنا قمنا بتعريف متغير نصي وضعنا فيه النص الموجود في print(s3) # s3 هنا قمنا بطباعة ما تم وضعه في المتغير

سنحصل على النتيجة التالية عند التشغيل.

Mhamad harmush


العامل *

هذا العامل يستخدم لتكرار النص عة مرات محددة.

مثال

Test.py
s1 = 'Python ' # يتألف من كلمة واحدة s1 هنا قمنا بتعريف متغير نصي إسمه
s2 = s1 * 5 # s2 خمسة مرات و وضعنا النتيجة النهائية في المتغير s1 هنا قمنا بتكرار النص الموجود في المتغير
print(s2) # s2 هنا قمنا بطباعة ما تم وضعه في المتغير
s1 = 'Python ' # يتألف من كلمة واحدة s1 هنا قمنا بتعريف متغير نصي إسمه s2 = s1 * 5 # s2 خمسة مرات و وضعنا النتيجة النهائية في المتغير s1 هنا قمنا بتكرار النص الموجود في المتغير print(s2) # s2 هنا قمنا بطباعة ما تم وضعه في المتغير

سنحصل على النتيجة التالية عند التشغيل.

Python Python Python Python Python


العامل %

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

مثال

Test.py
name = 'Mhamad' # قمنا بتخزين قيمة نصية name في المتغير
money = 10 # قمنا بتخزين قيمة عددية money في المتغير
subject = 'programming' # قمنا بتخزين قيمة نصية subject في المتغير
age = 19 # قمنا بتخزين قيمة عددية age في المتغير
# و الذي ننوي عرضه مكانه name لحجز مكان للنص الموجود في المتغير %s هنا قمنا باستخدام الرمز
print('Hello my name is %s.' %(name))
# و الذي ننوي عرضه مكانه money لحجز مكان للرقم الموجود في المتغير %d هنا قمنا باستخدام الرمز
print('I have %d dollars.' %(money))
# age لحجز مكان للرقم الموجود في المتغير %d و الرمز subject لحجز مكان للنص الموجود في المتغير %s هنا قمنا باستخدام الرمز
print('I learn %s at %d.' %(subject, age))
name = 'Mhamad' # قمنا بتخزين قيمة نصية name في المتغير money = 10 # قمنا بتخزين قيمة عددية money في المتغير subject = 'programming' # قمنا بتخزين قيمة نصية subject في المتغير age = 19 # قمنا بتخزين قيمة عددية age في المتغير # و الذي ننوي عرضه مكانه name لحجز مكان للنص الموجود في المتغير %s هنا قمنا باستخدام الرمز print('Hello my name is %s.' %(name)) # و الذي ننوي عرضه مكانه money لحجز مكان للرقم الموجود في المتغير %d هنا قمنا باستخدام الرمز print('I have %d dollars.' %(money)) # age لحجز مكان للرقم الموجود في المتغير %d و الرمز subject لحجز مكان للنص الموجود في المتغير %s هنا قمنا باستخدام الرمز print('I learn %s at %d.' %(subject, age))

سنحصل على النتيجة التالية عند التشغيل.

Hello my name is Mhamad.
I have 10 dollars.
I learn Programming at 19.


العامل in

هذا العامل يستخدم لمعرفة ما إن كان النص يحتوي على كلمة أو جملة معينة فيه, حيث يرجع True إن كان كذلك و False إن لم يكن.

مثال

Test.py
s = 'Python is easy to learn.' # s هنا قمنا بتعريف متغير نصي إسمه
print('easy' in s) # s موجود في النص المخزن في المتغير 'easy' لأن النص True هنا سيتم طباعة
print('hard' in s) # s غير موجود في النص المخزن في المتغير 'hard' لأن النص False هنا سيتم طباعة
s = 'Python is easy to learn.' # s هنا قمنا بتعريف متغير نصي إسمه print('easy' in s) # s موجود في النص المخزن في المتغير 'easy' لأن النص True هنا سيتم طباعة print('hard' in s) # s غير موجود في النص المخزن في المتغير 'hard' لأن النص False هنا سيتم طباعة

سنحصل على النتيجة التالية عند التشغيل.

True
False


العامل not in

هذا العامل يستخدم لمعرفة ما إن كان النص لا يحتوي على كلمة أو جملة معينة فيه, حيث يرجع True إن كان كذلك و False إن لم يكن.

مثال

Test.py
s = 'Python is easy to learn.' # s هنا قمنا بتعريف متغير نصي إسمه
print('easy' not in s) # s موجود في النص المخزن في المتغير 'easy' لأن النص False هنا سيتم طباعة
print('hard' not in s) # s غير موجود في النص المخزن في المتغير 'hard' لأن النص True هنا سيتم طباعة
s = 'Python is easy to learn.' # s هنا قمنا بتعريف متغير نصي إسمه print('easy' not in s) # s موجود في النص المخزن في المتغير 'easy' لأن النص False هنا سيتم طباعة print('hard' not in s) # s غير موجود في النص المخزن في المتغير 'hard' لأن النص True هنا سيتم طباعة

سنحصل على النتيجة التالية عند التشغيل.

False
True