الدرس 51 من 56 · إثراء من كتاب بايثون للجيمي

ملفات CSV — جداول بيانات حقيقية بملف واحد

أكثر البيانات بالعالم بتلاقيها بصيغة CSV (قيم مفصولة بفاصلة): كل سطر صف، وكل قيمة مفصولة بفاصلة. ملف CSV تقدر تفتحه بـ Excel أو Google Sheets، وتقرأه ببايثون بسهولة:

import csv

with open("students.csv", "w", newline="", encoding="utf-8") as f:
    w = csv.writer(f)
    w.writerow(["الاسم", "العمر", "المدينة"])
    w.writerow(["سارة", 15, "جدة"])
    w.writerow(["عمر", 16, "الرياض"])

لاحظ newline="" — بدونها بينزل سطر إضافي فاضي على ويندوز. والقراءة:

with open("students.csv", encoding="utf-8") as f:
    rows = list(csv.reader(f))
    header, data = rows[0], rows[1:]
    print(header)    # ['الاسم', 'العمر', 'المدينة']
    print(len(data))  # 2 طالب

# أو الأذكى: DictReader — كل صف يصير قاموساً
with open("students.csv", encoding="utf-8") as f:
    for row in csv.DictReader(f):
        print(row["الاسم"], row["المدينة"])

الفرق الجوهري: reader يعطيك قائمة بالترتيب (لو تغير ترتيب الأعمدة بالملف ينكسر كودك)، بينما DictReader يعطيك قاموساً تقرأ فيه بالاسم — أمتن وأوضح.

ولما تكون القيمة نفسها فيها فاصلة، CSV يلفها بعلامتي تنصيص تلقائياً — ما تحتاج تسوي شي.

اختبار سريع للدرس

جاوب على كل الأسئلة — لازم كلها صح. إذا غلطت بيطلع صندوق ذهبي يفهّمك وش الخطأ. مو عيب تغلط، كل مبرمج بالعالم غلط وأخذ منها درس.

1. كيف يبدو سطر واحد بملف CSV؟
2. وش ميزة DictReader عن reader؟
3. ليش نمرر newline='' عند الكتابة؟
الدرس 50 الدرس 52 — الوراثة — الصفوف تكبر عائلة
FeLiXFeLiX AI — مساعد المنصتين