"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > دليل لوحدة CSV في بايثون

دليل لوحدة CSV في بايثون

تم النشر بتاريخ 2024-11-08
تصفح:108

Guide to Python

يعد العمل مع البيانات جزءًا لا مفر منه من البرمجة، وباعتباري شخصًا غالبًا ما يجد نفسه غارقًا في تنسيقات الملفات المختلفة، فقد أقدر دائمًا كيف تعمل لغة Python على تبسيط العملية برمتها.

أحد تنسيقات الملفات التي تظهر بانتظام، خاصة في تحليل البيانات، هو ملف CSV.

يعد ملف CSV، أو القيم المفصولة بفواصل، تنسيقًا شائعًا لتبادل البيانات نظرًا لبساطته.

لحسن الحظ، تأتي بايثون مع وحدة مدمجة تسمى CSV، مما يجعل العمل مع هذه الملفات فعالا بشكل ملحوظ.

في هذه المقالة، سأشرح كيفية عمل وحدة CSV في Python، بدءًا من الاستخدام الأساسي وحتى التقنيات الأكثر تقدمًا التي يمكن أن توفر لك الكثير من الوقت عند معالجة البيانات.


ما هو ملف CSV؟

قبل الغوص في وحدة CSV، لنبدأ بالفهم الأساسي لمعنى ملف CSV.

ملف CSV هو في الأساس ملف نصي عادي حيث يمثل كل سطر صفًا من البيانات، ويتم فصل كل قيمة بفاصلة (أو في بعض الأحيان محددات أخرى مثل علامات التبويب).

إليك مثال سريع لما قد يبدو عليه الأمر:

Name,Age,Occupation
Alice,30,Engineer
Bob,25,Data Scientist
Charlie,35,Teacher

لماذا وحدة CSV؟

قد تتساءل عن سبب حاجتك إلى وحدة CSV عندما تكون ملفات CSV مجرد ملفات نصية يمكن قراءتها نظريًا باستخدام طرق معالجة الملفات القياسية في Python.

على الرغم من أن هذا صحيح، إلا أن ملفات CSV يمكن أن تحتوي على تعقيدات - مثل الفواصل المضمنة، وفواصل الأسطر داخل الخلايا، ومحددات مختلفة - والتي يصعب التعامل معها يدويًا.

تلخص وحدة CSV كل هذا، مما يتيح لك التركيز على بياناتك.


قراءة ملفات CSV

دعنا ننتقل إلى الكود.

العملية الأكثر شيوعًا التي ستقوم بها على ملف CSV هي قراءة محتوياته.

تعتبر وظيفة csv.reader() في الوحدة أداة سهلة الاستخدام لذلك.

إليك دليل خطوة بخطوة حول كيفية القيام بذلك.

القراءة الأساسية لملف CSV

import csv

# Open a CSV file
with open('example.csv', 'r') as file:
    reader = csv.reader(file)

    # Iterate over the rows
    for row in reader:
        print(row)

هذه هي أبسط طريقة لقراءة ملف CSV.

يُرجع csv.reader() عنصرًا قابلاً للتكرار، حيث يمنحك كل تكرار قائمة تمثل صفًا من الملف.

التعامل مع الرؤوس
تأتي معظم ملفات CSV مع رؤوس في الصف الأول، مثل أسماء الأعمدة.

إذا لم تكن بحاجة إلى هذه الرؤوس، يمكنك ببساطة تخطي الصف الأول عند التكرار:

import csv

with open('example.csv', 'r') as file:
    reader = csv.reader(file)

    # Skip header
    next(reader)

    for row in reader:
        print(row)

أحيانًا، أعمل مع ملفات تحتوي على مزيج من البيانات المفيدة وغير ذات الصلة، وأجد نفسي أتخطى الصفوف بناءً على أكثر من مجرد الرأس.

يمكنك القيام بذلك بسهولة داخل حلقة for.

DictReader: طريقة أكثر سهولة لقراءة ملفات CSV
إذا كان ملف CSV الخاص بك يحتوي على رؤوس، فإن csv.DictReader() يعد خيارًا رائعًا آخر يقرأ كل صف كقاموس، مع كون المفاتيح هي أسماء الأعمدة:

import csv

with open('example.csv', 'r') as file:
    reader = csv.DictReader(file)

    for row in reader:
        print(row)

يمكن أن يجعل هذا الأسلوب التعليمات البرمجية الخاصة بك أكثر قابلية للقراءة وبديهية، خاصة عند العمل مع مجموعات البيانات الكبيرة.

على سبيل المثال، يبدو الوصول إلى الصف['Name'] أكثر وضوحًا من التعامل مع الوصول المستند إلى الفهرس مثل الصف[0].


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

بمجرد قراءة بياناتك ومعالجتها، فمن المحتمل أنك ستحتاج إلى حفظها أو تصديرها.

وظيفة csv.writer() هي الأداة التي تستخدمها للكتابة إلى ملفات CSV.

الكتابة الأساسية لملف CSV

import csv

# Data to be written
data = [
    ['Name', 'Age', 'Occupation'],
    ['Alice', 30, 'Engineer'],
    ['Bob', 25, 'Data Scientist'],
    ['Charlie', 35, 'Teacher']
]

# Open a file in write mode
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)

    # Write data to the file
    writer.writerows(data)

تأخذ الدالة write.writerows() قائمة من القوائم وتكتبها في ملف CSV، حيث تمثل كل قائمة داخلية صفًا من البيانات.

DictWriter: طريقة أنظف لكتابة ملفات CSV
تمامًا كما لدينا DictReader لقراءة ملفات CSV في القواميس، لدينا DictWriter لكتابة القواميس إلى ملف CSV.

يمكن أن تكون هذه الطريقة مفيدة بشكل خاص عندما تريد تحديد أسماء الأعمدة بشكل صريح.

import csv

# Data as list of dictionaries
data = [
    {'Name': 'Alice', 'Age': 30, 'Occupation': 'Engineer'},
    {'Name': 'Bob', 'Age': 25, 'Occupation': 'Data Scientist'},
    {'Name': 'Charlie', 'Age': 35, 'Occupation': 'Teacher'}
]

# Open file for writing
with open('output.csv', 'w', newline='') as file:
    fieldnames = ['Name', 'Age', 'Occupation']
    writer = csv.DictWriter(file, fieldnames=fieldnames)

    # Write the header
    writer.writeheader()

    # Write the data
    writer.writerows(data)

باستخدام DictWriter، يمكنك الحصول على واجهة جميلة ونظيفة لكتابة القواميس إلى ملف CSV مع الحفاظ على التعليمات البرمجية الخاصة بك قابلة للقراءة وموجزة.


تخصيص المحددات

افتراضيًا، تستخدم وحدة CSV الفواصل لفصل القيم، ولكن في بعض الأحيان قد تعمل مع ملفات تستخدم محددات أخرى، مثل علامات التبويب أو الفواصل المنقوطة.

توفر وحدة CSV طريقة سهلة للتعامل مع هذه الحالات عن طريق تحديد الوسيطة المحددة.

import csv

with open('example_tab.csv', 'r') as file:
    reader = csv.reader(file, delimiter='\t')

    for row in reader:
        print(row)

لقد صادفت ملفات CSV تستخدم الفواصل المنقوطة بدلاً من الفواصل - عادةً من مصادر أوروبية - ومن المريح معرفة أن وحدة CSV في Python تتعامل مع هذا الأمر بسهولة.

سواء كان الأمر يتعلق بفواصل أو علامات تبويب أو أي محدد آخر، فإن وحدة CSV ستوفر لك كل ما تحتاجه.


التعامل مع البيانات المعقدة

ماذا لو كانت بياناتك تحتوي على فواصل داخل الحقول أو علامات الاقتباس أو حتى فواصل الأسطر؟

تتعامل وحدة CSV تلقائيًا مع مثل هذه الحالات باستخدام آليات الاقتباس.

يمكنك أيضًا التحكم في كيفية عمل الاقتباس باستخدام معلمة الاقتباس.

import csv

data = [
    ['Name', 'Occupation', 'Description'],
    ['Alice', 'Engineer', 'Works on, "cutting-edge" technology'],
    ['Bob', 'Data Scientist', 'Loves analyzing data.']
]

with open('complex.csv', 'w', newline='') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_ALL)
    writer.writerows(data)

في هذا المثال، يضمن QUOTE_ALL أن كل حقل ملتف بين علامتي اقتباس.

تتضمن خيارات الاقتباس الأخرى csv.QUOTE_MINIMAL، وcsv.QUOTE_NONNUMERIC، وcsv.QUOTE_NONE، مما يتيح لك التحكم الكامل في كيفية تنسيق بيانات CSV الخاصة بك.


خاتمة

على مر السنين، أصبحت أعتمد على تنسيق CSV باعتباره وسيلة خفيفة الوزن وفعالة لنقل البيانات، وكانت وحدة CSV في Python رفيقًا موثوقًا به في تلك الرحلة.

سواء كنت تتعامل مع جداول بيانات بسيطة أو حقول بيانات معقدة ومتعددة الأسطر، فإن هذه الوحدة تجعل العملية تبدو بديهية وسهلة.

على الرغم من أن العمل مع ملفات CSV قد يبدو وكأنه مهمة عادية في البداية، إلا أنه يمثل بوابة لإتقان معالجة البيانات.

من خلال خبرتي، بمجرد التغلب على ملفات CSV، ستجد نفسك تتعامل بثقة مع تنسيقات أكبر وأكثر تعقيدًا مثل قواعد بيانات JSON أو SQL. بعد كل شيء، كل شيء يبدأ بالأساسيات.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/devasservice/guide-to-pythons-csv-module-32ie?1 إذا كان هناك أي انتهاك، فيرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3