العمل مع ملفات CSV

Amine
15/09/2024

ملفات CSV (القيم المفصولة بفواصل) هي صيغة شائعة لتخزين البيانات الجدولية، مثل جداول البيانات أو قواعد البيانات. كل سطر في ملف CSV يمثل سجلًا، وكل سجل يتكون من حقول مفصولة بفواصل. تُسهل وحدة csv المدمجة في بايثون التعامل مع ملفات CSV.

قراءة ملف CSV

لقراءة ملف CSV، يمكنك استخدام كائن csv.reader. إليك كيفية قراءة البيانات من ملف يسمى data.csv:

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

في هذا المثال:

  • open('data.csv', 'r'): يفتح ملف CSV في وضع القراءة.
  • csv.reader(file): ينشئ كائن قارئ يقوم بتكرار السطور في ملف CSV.
  • for row in reader: يمر عبر كل سطر في كائن القارئ ويطبعه.

الكتابة إلى ملف CSV

للكتابة إلى ملف CSV، يمكنك استخدام كائن csv.writer. إليك كيفية كتابة البيانات إلى ملف يسمى output.csv:

import csv

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Name', 'Age', 'City'])
    writer.writerow(['Alice', 30, 'New York'])
    writer.writerow(['Bob', 25, 'Los Angeles'])

في هذا المثال:

  • open('output.csv', 'w', newline=''): يفتح الملف في وضع الكتابة. newline='' يُستخدم لمنع الأسطر الفارغة بين الصفوف.
  • csv.writer(file): ينشئ كائن كاتب.
  • writer.writerow(): يكتب صفًا إلى ملف CSV. يمكنك استدعاء هذه الدالة عدة مرات لكتابة عدة صفوف.

قراءة ملفات CSV مع رؤوس الأعمدة

إذا كان ملف CSV يحتوي على رؤوس أعمدة، يمكنك استخدام csv.DictReader لقراءة الملف إلى قواميس، مما يسمح لك بالوصول إلى البيانات باستخدام أسماء الأعمدة:

import csv

with open('data_with_headers.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['Name'], row['Age'], row['City'])

تمارين

التمرين 1

أنشئ ملف CSV يسمى students.csv يحتوي على البيانات التالية: الاسم، العمر، الدرجة. اكتب برنامجًا لقراءة هذا الملف وطباعة معلومات كل طالب.

import csv

with open('students.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Name', 'Age', 'Grade'])
    writer.writerow(['Alice', 21, 'A'])
    writer.writerow(['Bob', 22, 'B'])
    writer.writerow(['Charlie', 23, 'C'])

with open('students.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

التمرين 2

اكتب برنامجًا يقرأ ملف CSV يحتوي على بيانات المبيعات (sales.csv)، يحسب إجمالي مبلغ المبيعات، ويطبعها.

import csv

total_sales = 0

with open('sales.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        total_sales += float(row['Amount'])

print(f"Total Sales: ${total_sales}")

التمرين 3

عدل ملف students.csv لإضافة عمود جديد يسمى “البريد الإلكتروني” لكل طالب. استخدم csv.DictWriter لتحديث الملف.

import csv

students = [
    {'Name': 'Alice', 'Age': 21, 'Grade': 'A', 'Email': 'alice@example.com'},
    {'Name': 'Bob', 'Age': 22, 'Grade': 'B', 'Email': 'bob@example.com'},
    {'Name': 'Charlie', 'Age': 23, 'Grade': 'C', 'Email': 'charlie@example.com'}
]

with open('students.csv', 'w', newline='') as file:
    fieldnames = ['Name', 'Age', 'Grade', 'Email']
    writer = csv.DictWriter(file, fieldnames=fieldnames)

    writer.writeheader()
    for student in students:
        writer.writerow(student)

عمل رائع! لقد تعلمت كيفية القراءة من ملفات CSV والكتابة إليها، وهي مهارة حاسمة للعمل مع البيانات في العديد من التطبيقات.

التعليقات

اترك تعليقاً