النصوص في Python ودوالها و f-strings
النصوص من أكثر أنواع البيانات استخداماً: أسماء، ورسائل، وعناوين بريد، وكلمات مرور. في هذا الدرس ستتعلم كيف تصل إلى أي حرف في النص، وكيف تقطع أجزاء منه، وتستخدم أهم دوال النصوص، ثم تتعرف على f-strings، أسهل وأجمل طريقة لدمج المتغيرات في الجمل.
الطول والفهرسة
Section titled “الطول والفهرسة”النص سلسلة من الحروف، وكل حرف له رقم يسمى الفهرس (Index). تخيّل النص مثل صف من الكراسي في مسرح، وكل كرسي عليه رقم. لكن الترقيم يبدأ من صفر:
word = "Python"print(len(word))print(word[0])print(word[-1])6Pnlen(word)تعطيك عدد الحروف.word[0]أول حرف.word[-1]آخر حرف. الأرقام السالبة تعدّ من النهاية:-1الأخير، و-2قبل الأخير.
التقطيع (Slicing)
Section titled “التقطيع (Slicing)”يمكنك أن تأخذ جزءاً من النص بكتابة [البداية:النهاية]:
word = "Python"print(word[0:3])print(word[2:])Pytthonword[0:3]يبدأ من الفهرس 0 ويتوقف قبل الفهرس 3، أي يأخذ الحروف 0 و 1 و 2.word[2:]يبدأ من الفهرس 2 حتى النهاية.
تخيّل أنك تقطع شريحة من رغيف خبز: تحدد مكان بداية القطع ونهايته.
دوال النصوص المهمة
Section titled “دوال النصوص المهمة”الدالة (Method) أمر جاهز تستدعيه بنقطة بعد النص:
text = " Hello World "print(text.strip())print(text.strip().upper())print(text.strip().lower())print("hello world".title())Hello WorldHELLO WORLDhello worldHello Worldstripتزيل المسافات من البداية والنهاية. مفيدة جداً مع ما يكتبه المستخدم.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']True23a-b-creplaceتستبدل جزءاً بآخر.splitتقسّم النص إلى قائمة من الكلمات (سنتعلم القوائم قريباً).- الكلمة
inتسأل: هل هذا الجزء موجود داخل النص؟ findتعطي فهرس أول ظهور، أو-1إن لم تجده.countتعدّ مرات الظهور.joinعكسsplit: تجمع عناصر قائمة في نص واحد بفاصل تختاره.
النصوص لا تتغير
Section titled “النصوص لا تتغير”دوال النصوص لا تعدّل النص الأصلي، بل تُرجع نصاً جديداً:
animal = "cat"animal.upper()print(animal)animal = animal.upper()print(animal)catCATولا يمكنك تغيير حرف واحد مباشرة: animal[0] = "b" يسبب خطأ TypeError: 'str' object does not support item assignment. إذا أردت نصاً مختلفاً، أنشئ نصاً جديداً.
f-strings: دمج المتغيرات في النص
Section titled “f-strings: دمج المتغيرات في النص”لنفترض أنك تريد جملة فيها متغيرات. الطريقة القديمة باللصق متعبة:
name = "سارة"age = 14print("اسمي " + name + " وعمري " + str(age))الحل الأفضل هو f-string: ضع الحرف f قبل علامة التنصيص، واكتب أي متغير بين قوسين معقوفين { }:
name = "سارة"age = 14print(f"اسمي {name} وعمري {age} سنة")print(f"بعد 5 سنوات سيكون عمري {age + 5}")اسمي سارة وعمري 14 سنةبعد 5 سنوات سيكون عمري 19f-string مثل استمارة فيها فراغات تُملأ تلقائياً. ولاحظ أنك تستطيع كتابة عملية حسابية كاملة داخل القوسين، ولا تحتاج إلى str() للأرقام.
تنسيق الأرقام العشرية
Section titled “تنسيق الأرقام العشرية”price = 19.5print(f"السعر: {price:.2f} جنيه")السعر: 19.50 جنيهالكتابة :.2f تعني «اعرض الرقم برقمين بعد العلامة العشرية». مفيدة جداً مع الأسعار.
رموز خاصة داخل النص
Section titled “رموز خاصة داخل النص”print("سطر\nسطر جديد")print('It\'s easy')سطرسطر جديدIt's easy\n تعني سطراً جديداً، والشرطة العكسية \ قبل علامة التنصيص تجعلها جزءاً من النص.
جرّب بنفسك
Section titled “جرّب بنفسك”اكتب برنامجاً يطلب من المستخدم اسمه، ثم ينظّفه من المسافات ويطبع: الاسم بحروف كبيرة، وعدد حروفه، وأول حرف فيه، ورسالة ترحيب بـ f-string. مثال لو كتب المستخدم « omar »:
OMARعدد الحروف: 4أول حرف: oمرحباً يا Omar!أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان أن الفهرسة تبدأ من صفر: أول حرف
text[0]وليسtext[1]. - نسيان الحرف f:
"اسمي {name}"بدونfتعرض{name}كما هي. - توقع أن الدالة تغيّر النص الأصلي: احفظ النتيجة:
name = name.strip().
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما ناتج 'Python'[1:4]؟
التقطيع يبدأ من الفهرس 1 (y) ويتوقف قبل الفهرس 4، فيعطي yth.
سؤال
أي سطر يطبع «عمري 14» إذا كان age = 14؟
f-string تحتاج الحرف f قبل علامة التنصيص. أما استخدام + هنا فيسبب خطأ لأنه يلصق نصاً مع رقم.
الخلاصة
Section titled “الخلاصة”lenتعطي طول النص، والفهرسة تبدأ من صفر، و[-1]آخر حرف.- التقطيع
[بداية:نهاية]يأخذ جزءاً، والنهاية لا تدخل فيه. - دوال مهمة:
stripوupperوlowerوreplaceوsplitوjoinوfind. - النصوص لا تتغير، فاحفظ نتيجة الدالة في متغير.
- f-string مثل
f"اسمي {name}"هي أسهل طريقة لدمج المتغيرات في النص.