تخطَّ إلى المحتوى

النصوص في Python ودوالها و f-strings

الدرس 7 من 25 · Python

النصوص من أكثر أنواع البيانات استخداماً: أسماء، ورسائل، وعناوين بريد، وكلمات مرور. في هذا الدرس ستتعلم كيف تصل إلى أي حرف في النص، وكيف تقطع أجزاء منه، وتستخدم أهم دوال النصوص، ثم تتعرف على f-strings، أسهل وأجمل طريقة لدمج المتغيرات في الجمل.

النص سلسلة من الحروف، وكل حرف له رقم يسمى الفهرس (Index). تخيّل النص مثل صف من الكراسي في مسرح، وكل كرسي عليه رقم. لكن الترقيم يبدأ من صفر:

word = "Python"
print(len(word))
print(word[0])
print(word[-1])
الناتج
6
P
n
  • len(word) تعطيك عدد الحروف.
  • word[0] أول حرف.
  • word[-1] آخر حرف. الأرقام السالبة تعدّ من النهاية: -1 الأخير، و -2 قبل الأخير.

يمكنك أن تأخذ جزءاً من النص بكتابة [البداية:النهاية]:

word = "Python"
print(word[0:3])
print(word[2:])
الناتج
Pyt
thon
  • word[0:3] يبدأ من الفهرس 0 ويتوقف قبل الفهرس 3، أي يأخذ الحروف 0 و 1 و 2.
  • word[2:] يبدأ من الفهرس 2 حتى النهاية.

تخيّل أنك تقطع شريحة من رغيف خبز: تحدد مكان بداية القطع ونهايته.

الدالة (Method) أمر جاهز تستدعيه بنقطة بعد النص:

text = " Hello World "
print(text.strip())
print(text.strip().upper())
print(text.strip().lower())
print("hello world".title())
الناتج
Hello World
HELLO WORLD
hello world
Hello World
  • strip تزيل المسافات من البداية والنهاية. مفيدة جداً مع ما يكتبه المستخدم.
  • upper و lower تحوّلان الحروف الإنجليزية إلى كبيرة أو صغيرة.
  • title تجعل أول حرف من كل كلمة كبيراً.
  • لاحظ أنك تستطيع تسلسل الدوال: text.strip().upper().

البحث والاستبدال والتقسيم

Section titled “البحث والاستبدال والتقسيم”
print("Hello World".replace("World", "Python"))
print("Hello World".split())
print("Python" in "I love Python")
print("Hello".find("l"))
print("ba-na-na".count("a"))
print("-".join(["a", "b", "c"]))
الناتج
Hello Python
['Hello', 'World']
True
2
3
a-b-c
  • replace تستبدل جزءاً بآخر.
  • split تقسّم النص إلى قائمة من الكلمات (سنتعلم القوائم قريباً).
  • الكلمة in تسأل: هل هذا الجزء موجود داخل النص؟
  • find تعطي فهرس أول ظهور، أو -1 إن لم تجده.
  • count تعدّ مرات الظهور.
  • join عكس split: تجمع عناصر قائمة في نص واحد بفاصل تختاره.

دوال النصوص لا تعدّل النص الأصلي، بل تُرجع نصاً جديداً:

animal = "cat"
animal.upper()
print(animal)
animal = animal.upper()
print(animal)
الناتج
cat
CAT

ولا يمكنك تغيير حرف واحد مباشرة: animal[0] = "b" يسبب خطأ TypeError: 'str' object does not support item assignment. إذا أردت نصاً مختلفاً، أنشئ نصاً جديداً.

f-strings: دمج المتغيرات في النص

Section titled “f-strings: دمج المتغيرات في النص”

لنفترض أنك تريد جملة فيها متغيرات. الطريقة القديمة باللصق متعبة:

name = "سارة"
age = 14
print("اسمي " + name + " وعمري " + str(age))

الحل الأفضل هو f-string: ضع الحرف f قبل علامة التنصيص، واكتب أي متغير بين قوسين معقوفين { }:

name = "سارة"
age = 14
print(f"اسمي {name} وعمري {age} سنة")
print(f"بعد 5 سنوات سيكون عمري {age + 5}")
الناتج
اسمي سارة وعمري 14 سنة
بعد 5 سنوات سيكون عمري 19

f-string مثل استمارة فيها فراغات تُملأ تلقائياً. ولاحظ أنك تستطيع كتابة عملية حسابية كاملة داخل القوسين، ولا تحتاج إلى str() للأرقام.

price = 19.5
print(f"السعر: {price:.2f} جنيه")
الناتج
السعر: 19.50 جنيه

الكتابة :.2f تعني «اعرض الرقم برقمين بعد العلامة العشرية». مفيدة جداً مع الأسعار.

print("سطر\nسطر جديد")
print('It\'s easy')
الناتج
سطر
سطر جديد
It's easy

\n تعني سطراً جديداً، والشرطة العكسية \ قبل علامة التنصيص تجعلها جزءاً من النص.

اكتب برنامجاً يطلب من المستخدم اسمه، ثم ينظّفه من المسافات ويطبع: الاسم بحروف كبيرة، وعدد حروفه، وأول حرف فيه، ورسالة ترحيب بـ f-string. مثال لو كتب المستخدم « omar »:

الناتج
OMAR
عدد الحروف: 4
أول حرف: o
مرحباً يا Omar!
  • نسيان أن الفهرسة تبدأ من صفر: أول حرف text[0] وليس text[1].
  • نسيان الحرف f: "اسمي {name}" بدون f تعرض {name} كما هي.
  • توقع أن الدالة تغيّر النص الأصلي: احفظ النتيجة: name = name.strip().

سؤال

ما ناتج 'Python'[1:4]؟

سؤال

أي سطر يطبع «عمري 14» إذا كان age = 14؟

  • len تعطي طول النص، والفهرسة تبدأ من صفر، و [-1] آخر حرف.
  • التقطيع [بداية:نهاية] يأخذ جزءاً، والنهاية لا تدخل فيه.
  • دوال مهمة: strip و upper و lower و replace و split و join و find.
  • النصوص لا تتغير، فاحفظ نتيجة الدالة في متغير.
  • f-string مثل f"اسمي {name}" هي أسهل طريقة لدمج المتغيرات في النص.