الدرس 6 من 10

النصوص (Strings)

أغلب البيانات اللي هتقابلها نصوص محتاجة تتظبط.

كل حرف ليه رقم

النص عبارة عن حروف ورا بعض، وكل حرف ليه رقم مكانه اسمه index. العد بيبدأ من صفر مش من واحد، والأرقام السالبة بتعد من الآخر.

indexing.py
word = "Python"
#       P  y  t  h  o  n
#       0  1  2  3  4  5
#      -6 -5 -4 -3 -2 -1

print(word[0])      # first character
print(word[-1])     # last character
print(word[0:3])    # slicing: from 0 up to (not including) 3
print(len(word))    # length

أشهر الدوال الجاهزة

الدالةبتعمل إيه
.upper() / .lower()تكبير أو تصغير الحروف
.strip()تشيل المسافات الزيادة من الأول والآخر
.replace(a, b)تبدل كل a بـ b
.split(",")تقطع النص لقائمة عند الفاصلة
.startswith(x)النص بيبدأ بـ x؟
"x" in textx موجود جوه النص؟
📝 مثال واقعي: تنضيف فورم تسجيلاليوزرز بيكتبوا بياناتهم بعشوائية: مسافات زيادة، حروف كابيتال، أرقام بشرطات. تنضيفها ده بالظبط اللي هتعمله بعدين في Data Cleaning قبل تدريب أي موديل.
clean_form.py
raw_email = "   Ahmed.Ali@Gmail.COM  "
raw_phone = "010-1234-5678"

email = raw_email.strip().lower()      # chain methods together
phone = raw_phone.replace("-", "")

print(email)
print(phone)

# Validate Egyptian mobile number
valid_prefixes = ("010", "011", "012", "015")
if len(phone) == 11 and phone.startswith(valid_prefixes):
    print("Valid number")
else:
    print("Invalid number")

f-strings: أسهل طريقة تحط متغيرات في نص

fstrings.py
product = "Laptop"
price = 23499.5
qty = 2

# f before the quotes, variables inside {}
print(f"{qty} x {product} = {price * qty:,.2f} EGP")
# :,.2f -> comma separators + 2 decimal places
💡 النصوص مبتتغيرش.upper() مش بتغير النص الأصلي، بترجع نسخة جديدة. عشان كده لازم تكتب email = email.lower() مش email.lower() لوحدها.
الدرس اللي فات