🧵 تعلم التعامل مع النصوص (Strings) في بايثون خطوة بخطوة

مرحباً بك في عالم النصوص في بايثون! 🎉 تخيل أنك تريد كتابة رسالة ترحيب، أو تخزين اسم مستخدم، أو التعامل مع أي جملة في برنامجك. هذا هو بالضبط دور الـ Strings، أو "النصوص". في هذا الدرس، سنتعلم معاً كيفية إنشاء النصوص والتعامل معها بكل سهولة، وهي من الأساسيات المهمة جداً لأي مبرمج.


📝 ما هي الـ Strings (النصوص)؟

في لغة بايثون، الـ String هو نوع بيانات يستخدم لتمثيل النصوص. يمكن أن يكون حرفاً واحداً، كلمة، جملة كاملة، أو حتى فقرة طويلة. ببساطة، أي شيء تكبعه بين علامتي اقتباس (' ' أو " ") يعتبر نصاً في بايثون.

مثال بسيط:

# هذه كلها أمثلة على نصوص (Strings)
greeting = "Hello World"  # نص بالعربية داخل علامات تنصيص مزدوجة
name = 'Ahmed'                # نص بالإنجليزية داخل علامات تنصيص مفردة
single_char = "A"             # حتى حرف واحد يعتبر نصاً
empty_text = ""               # هذا نص أيضاً، ولكنه نص فارغ

🔤 طرق إنشاء النصوص: علامات الاقتباس

تستخدم بايثون نوعين رئيسيين من علامات الاقتباس لإنشاء النصوص، وكلاهما يؤدي نفس الغرض:

  1. علامات الاقتباس المفردة: 'نص'
  2. علامات الاقتباس المزدوجة: "نص"

لماذا يوجد نوعان؟ 🤔 السبب بسيط ومفيد! إذا كان نصك يحتوي على علامة اقتباس واحدة بداخله، يمكنك استخدام النوع الآخر لتحديد النص.

مثال توضيحي:

# النص يحتوي على علامة تنصيص مفردة، لذا نستخدم علامات تنصيص مزدوجة لتحديده.
message1 = "It's a beautiful day!"

# النص يحتوي على علامة تنصيص مزدوجة، لذا نستخدم علامات تنصيص مفردة لتحديده.
message2 = 'He said, "Hello!" and smiled.'

print(message1)
print(message2)

📄 النصوص متعددة الأسطر (Multiline Strings)

ماذا لو أردت كتابة نص طويل يغطي أكثر من سطر؟ هنا يأتي دور علامات الاقتباس الثلاثية (''' ''' أو """ """). تسمح لك بكتابة نص يمتد على عدة أسطر كما هو.

مثال:

# إنشاء نص متعدد الأسطر باستخدام ثلاثة علامات تنصيص
long_message = """مرحباً أحمد،

نشكرك على انضمامك إلى Codex Academy.
نتمنى لك رحلة تعلم ممتعة ومفيدة.

مع تحيات الفريق.
"""

print(long_message)

➕ دمج النصوص (String Concatenation)

"الدَمْج" يعني ربط نصين أو أكثر معاً لإنشاء نص جديد. نستخدم لهذا الغرض علامة +.

مثال:

first_name = "Ali"
last_name = "Khalid"

# دمج النصوص باستخدام علامة +
full_name = first_name + " " + last_name
print(full_name)  # سيطبع: Ali Khalid

# مثال آخر: إنشاء جملة ترحيب
greeting = "أهلاً وسهلاً، " + first_name + "!"
print(greeting)   # سيطبع: أهلاً وسهلاً، Ali!

ملاحظة مهمة: ⚠️ لا يمكنك دمج نص مع رقم باستخدام + مباشرة. سنتعلم كيفية تحويل الأرقام إلى نصوص في دروس لاحقة.


🔢 الوصول إلى الأحرف داخل النص (Indexing)

يمكنك التفكير في النص كسلسلة من الأحرف مرتبة بجانب بعضها. لكل حرف رقم فهرس (Index) يحدد موقعه. المهم أن تعرف أن الترقيم يبدأ من الصفر (0) في البرمجة، وليس من الواحد.

مثال:

word = "Python"
# index:       0   1   2   3   4   5
# character:   P   y   t   h   o   n

print(word[0])  # سيطبع: P
print(word[1])  # سيطبع: y
print(word[5])  # سيطبع: n

✂️ استخراج جزء من النص (Slicing)

إذا كان الـ Indexing يعطيك حرفاً واحداً، فإن الـ Slicing يسمح لك باستخراج مجموعة متتالية من الأحرف (جزء من النص). نستخدم النقطتين : للقيام بذلك.

الصيغة: [start:end]

  • start: الفهرس الذي تبدأ منه القطعة (شامل).
  • end: الفهرس الذي تنتهي عنده القطعة (غير شامل)، أي أن الحرف في هذا الفهرس لا يدخل في النتيجة.

مثال:

language = "JavaScript"

# استخراج الأحرف من الفهرس 0 إلى الفهرس 4 (لا يشمل 4)
slice1 = language[0:4]
print(slice1)  # سيطبع: Java

# إذا حذفت الفهرس الأول، يبدأ من البداية (0)
slice2 = language[:4]
print(slice2)  # سيطبع أيضاً: Java

# إذا حذفت الفهرس الأخير، ينتهي عند نهاية النص
slice3 = language[4:]
print(slice3)  # سيطبع: Script

# استخراج النص كاملاً
slice4 = language[:]
print(slice4)  # سيطبع: JavaScript

🧮 ماهو طول النص؟ دالة len()

لمعرفة عدد الأحرف الموجودة داخل نص معين (بما في ذلك المسافات وعلامات الترقيم)، نستخدم الدالة المدمجة len().

مثال:

my_string = "أحب تعلم بايثون!"
length = len(my_string)

print("النص هو:", my_string)
print("عدد أحرف هذا النص هو:", length)  # سيطبع: 17

🧪 دعنا نتدرب معاً!

لنقم بإنشاء برنامج بسيط يطبق ما تعلمناه:

# 1. إنشاء نصوص
title = "مغامرة البرمجة"
chapter = 'الفصل الأول: البداية'

# 2. دمج النصوص
story_start = title + " - " + chapter
print("قصة اليوم:", story_start)

# 3. الوصول إلى الأحرف
first_letter = title[0]
print("الحرف الأول من العنوان هو:", first_letter)

# 4. استخراج جزء من النص
keyword = title[0:4]
print("الكلمة المفتاحية:", keyword)

# 5. معرفة الطول
text_length = len(title)
print("طول العنوان:", text_length, "أحرف")