جاري تحميل المحتوى...
تعاملت في الفصول السابقة مع قيم نصية بسيطة عند استخدام print() وinput(). في هذا الفصل ستتعلم النصوص بصورة أعمق: كيف تصل إلى حرف محدد، وكيف تأخذ جزءًا من النص، وكيف تبحث داخله، وكيف تستخدم أهم الأدوات التي تساعدك على معالجة النصوص وتنسيقها.
النص أو String هو قيمة مكوّنة من حروف أو أرقام أو رموز مكتوبة داخل علامات اقتباس. نوع النص في Python هو str.
name = "Ali"
language = "Python"
print(name)
print(language)
يمكن استخدام علامات اقتباس مزدوجة أو مفردة لإنشاء نص بسيط:
first = "Python"
second = 'Python'
print(first)
print(second)
القيمتان هنا نصيتان.
القيمة "25" نص، بينما القيمة 25 عدد صحيح. علامات الاقتباس هي التي تجعل القيمة الأولى نصية.
text_value = "25"
number_value = 25
print(type(text_value))
print(type(number_value))
هذا الفرق مهم عند إجراء العمليات أو المقارنات، لأن Python تتعامل مع النص والعدد بوصفهما نوعين مختلفين.
يمكن الوصول إلى حرف محدد داخل النص باستخدام Index. تبدأ الفهرسة في Python من 0 وليس من 1.
text = "Python"
print(text[0])
print(text[1])
الحرف عند الفهرس 0 هو "P"، والحرف عند الفهرس 1 هو "y".
يمكن تصور الفهارس بهذا الشكل:
text[0] يعطي "P".text[1] يعطي "y".text[2] يعطي "t".text[3] يعطي "h".text[4] يعطي "o".text[5] يعطي "n".يمكن استخدام فهارس سالبة للعد من نهاية النص. الفهرس -1 يشير إلى آخر حرف.
text = "Python"
print(text[-1])
print(text[-2])
الناتج الأول هو "n"، والثاني هو "o".
في هذه المرحلة يكفي تذكر أن -1 يعني آخر حرف، و-2 يعني الحرف الذي يسبقه.
يمكن استخدام Slicing للحصول على جزء من النص بالصيغة text[start:stop].
قيمة start مشمولة، أما قيمة stop فغير مشمولة.
text = "Python"
print(text[1:4])
يبدأ التقطيع من الفهرس 1 وهو الحرف "y"، ويتوقف قبل الفهرس 4، لذلك تكون النتيجة "yth".
إذا لم تكتب البداية، يبدأ التقطيع من أول النص:
text = "Python"
print(text[:3])
الناتج هو "Pyt".
وإذا لم تكتب قيمة التوقف، يستمر التقطيع حتى نهاية النص:
text = "Python"
print(text[2:])
الناتج هو "thon".
يمكن إضافة قيمة ثالثة تحدد مقدار الانتقال بين الحروف.
text = "Python"
print(text[::2])
يأخذ هذا المثال حرفًا ثم يتجاوز حرفًا، فتكون النتيجة "Pto".
لا تحتاج في هذه المرحلة إلى استخدام تقطيعات معقدة؛ الهدف هو فهم فكرة البداية والتوقف والخطوة.
len()تعيد الدالة len() عدد الحروف الموجودة في النص.
text = "Python"
print(len(text))
الناتج هو 6 لأن كلمة "Python" تحتوي على ستة حروف.
يمكن تخزين النتيجة في متغير:
word = "Code"
length = len(word)
print(length)
قيمة length هي 4.
forتعلّمت في الفصل السابق حلقة for. يمكن الآن تطبيقها على String، حيث تمر الحلقة على حروف النص بالتتابع.
word = "Code"
for char in word:
print(char)
تأخذ char في كل دورة حرفًا واحدًا من النص، ويظهر:
C
o
d
e
هذا تطبيق لما تعلمته عن الحلقات، وليس نوعًا جديدًا من الحلقات.
inيمكن استخدام العامل in لمعرفة هل يوجد حرف أو جزء من نص داخل نص آخر. تكون النتيجة True أو False.
text = "Python"
print("Py" in text)
print("Java" in text)
النتيجة الأولى True لأن "Py" موجودة داخل النص، والثانية False.
يمكن دمج in مع شرط سبق تعلمه:
text = "Python"
if "th" in text:
print("موجود")
else:
print("غير موجود")
Strings في Python غير قابلة للتغيير حرفًا بحرف بعد إنشائها. يسمى ذلك Immutability.
إذا كان لدينا:
text = "Python"
فلا نستخدم text[0] = "J" لتغيير الحرف الأول مباشرة.
بدلًا من تعديل الحرف داخل النص نفسه، ننشئ نصًا جديدًا أو نستخدم Method تعيد قيمة نصية جديدة.
text = "python"
new_text = text.upper()
print(text)
print(new_text)
تظل قيمة text هي "python"، بينما تحمل new_text القيمة الجديدة "PYTHON".
توفر Strings Methods تساعد على إجراء عمليات شائعة. من المهم تذكر أن هذه Methods عادة تعيد نصًا جديدًا ولا تغير النص الأصلي تلقائيًا.
upper() وlower()تعيد upper() نسخة جديدة تكون الأحرف الإنجليزية فيها كبيرة:
text = "Python"
print(text.upper())
الناتج هو "PYTHON".
أما lower() فتعيد نسخة تكون الأحرف الإنجليزية فيها صغيرة:
text = "Python"
print(text.lower())
الناتج هو "python".
إذا أردت الاحتفاظ بالنتيجة الجديدة، يمكنك إسنادها إلى متغير:
text = "Python"
lower_text = text.lower()
print(lower_text)
strip()تعيد strip() نصًا جديدًا بعد إزالة المسافات أو المحارف البيضاء الموجودة في بداية النص ونهايته.
text = " Python Course "
clean_text = text.strip()
print(clean_text)
تكون النتيجة "Python Course".
لاحظ أن المسافة الموجودة بين "Python" و"Course" بقيت كما هي. لا تحذف strip() جميع المسافات الموجودة داخل النص.
replace()تستخدم replace() لإنشاء نص جديد يُستبدل فيه جزء محدد بجزء آخر.
text = "I like Python"
new_text = text.replace("Python", "Code")
print(new_text)
الناتج هو "I like Code".
أما text نفسها فتبقى بقيمتها الأصلية ما لم نعد إسناد النتيجة إليها.
find()يمكن استخدام find() لمعرفة موضع بداية جزء معين داخل النص.
text = "Python"
print(text.find("th"))
الناتج هو 2 لأن الجزء "th" يبدأ عند الفهرس 2.
إذا لم تجد find() الجزء المطلوب، فإنها تعيد -1.
text = "Python"
print(text.find("Java"))
الناتج هو -1.
in وfind()in يجيب عن سؤال: هل الجزء موجود؟ والنتيجة True أو False.find() تعطي موضع البداية إذا وجد الجزء، أو -1 إذا لم تجده.f-stringتعرفت سابقًا بصورة بسيطة على f-string. الآن يمكن استخدامها لإدراج أكثر من قيمة داخل نص واحد بصورة واضحة.
name = "Ali"
age = 20
print(f"الاسم: {name}، العمر: {age}")
تستبدل Python ما داخل الأقواس المعقوفة بالقيمة الحالية للمتغير.
product = "Book"
price = 15
print(f"المنتج: {product}، السعر: {price}")
يمكن أيضًا وضع تعبير حسابي بسيط داخل الأقواس المعقوفة.
price = 10
quantity = 3
print(f"الإجمالي: {price * quantity}")
تُحسب العملية price * quantity أولًا، ثم تدرج النتيجة داخل النص، فيظهر "الإجمالي: 30".
لا نحتاج في هذا الفصل إلى خيارات التنسيق المتقدمة؛ الهدف هو إدراج القيم والتعبيرات البسيطة بصورة واضحة.
يمكن دمج مفاهيم هذا الفصل مع ما تعلمته سابقًا.
word = "Code"
count = 0
for char in word:
if char == "o" or char == "e":
count += 1
print(count)
تمر الحلقة على الحروف، ويزيد count عندما يكون الحرف "o" أو "e". النتيجة النهائية هي 2.
0text = "Python"
print(text[0])
الحرف الأول هو "P" وليس الحرف الثاني.
stop مشمولًا في Slicingtext = "Python"
print(text[1:4])
الفهرس 4 غير مشمول، لذلك النتيجة "yth".
النص غير قابل لتعديل حرف منفرد باستخدام Index. إذا احتجت قيمة مختلفة، أنشئ نصًا جديدًا أو استخدم Method تعيد نصًا جديدًا.
text = "python"
new_text = text.upper()
print(text)
print(new_text)
القيمة الأصلية تبقى "python"، والقيمة الجديدة هي "PYTHON".
strip() تحذف كل المسافاتstrip() تزيل المسافات المحيطة بالنص من البداية والنهاية، ولا تحذف المسافات الداخلية العادية.
in وfind()in تعيد قيمة منطقية، بينما find() تعيد موضع البداية أو -1.
أنشئ متغيرًا يحتوي على النص "Python"، ثم اطبع الحرف الأول والحرف الأخير باستخدام الفهرسة.
استخدم Slicing لاستخراج "yth" من النص "Python".
اطبع طول النص "Programming" باستخدام len().
استخدم حلقة for لطباعة كل حرف في النص "Code" في سطر مستقل.
تحقق باستخدام in هل الجزء "Py" موجود داخل "Python".
أنشئ نصًا يحتوي على مسافات في بدايته ونهايته، ثم استخدم strip() واحفظ النتيجة في متغير جديد.
استخدم replace() لاستبدال كلمة داخل نص بسيط، ثم اطبع النص الأصلي والنص الجديد ولاحظ الفرق.
أنشئ متغيرين للاسم والعمر، ثم استخدم f-string لعرض القيمتين في جملة واحدة.
str.0.-1 يشير إلى آخر حرف.text[start:stop]، وتكون قيمة stop غير مشمولة.text[::2].len() تعيد طول النص.for للمرور على حروف النص بالتتابع.in تتحقق من وجود جزء داخل النص.upper() وlower() تعيدان نصًا جديدًا بحالة أحرف مختلفة.strip() تزيل المسافات المحيطة بالنص، لا المسافات الداخلية.replace() تعيد نصًا جديدًا بعد الاستبدال.find() تعيد موضع بداية الجزء أو -1 عند عدم العثور عليه.f-string تسمح بإدراج متغيرات وتعبيرات بسيطة داخل النص.في الفصل التالي ستنتقل إلى القوائم وTuples، وستتعلم كيفية تنظيم عدة قيم والتعامل معها ضمن بنى بيانات مخصصة لذلك.
نشر في ١١ أغسطس ٢٠٢٦