الدالة csv.reader()‎‎ في بايثون

من موسوعة حسوب
< Python‏ | csv

تعيد الدالة كائن قراءة مهمّته هي المرور على جميع الأسطر في ملف csv المعطى.

البنية العامة

csv.reader(csvfile, dialect='excel', **fmtparams)

‎المعاملات

csvfile

ملف csv المراد قراءة محتوياته، ويمكن أن تكون قيمة هذا المعامل أيّ كائن يدعم بروتوكول المكرِّر iterator protocol ويعيد سلسلة نصية في كلّ مرة يجري فيها استدعاء التابع ‎__next__()‎، وعادة ما تكون كائنات الملفات وكائنات القوائم ملائمة لهذا الغرض.

إن كانت قيمة هذا المعامل كائن ملف، فيجب أن يكون مفتوحًا مع المعامل ''newline=.

ملاحظة: إن لم تحدد القيمة ''newline= لن تُفسّر الأسطر الجديدة في الحقول المحاطة بعلامات اقتباس بطريقة صحيحة، وسيضاف رمز ‎\r إضافي إلى الأسطر المنتهية بالرمز ‎\r\n في المنصّات التي تستخدم الرمز الأخير في نهايات الأسطر. يُنصح بتحديد القيمة ''newline= دائمًا إذ تمتلك وحدة csv طريقتها الخاصة في التعامل مع نهايات الأسطر بمختلف أنواعها.

dialect

معامل اختياري، يمكن استخدامه لتعريف مجموعة من المعاملات الخاصة بلهجة CSV ‏(CSV dialect)‏ معيّنة. يمكن أن تكون قيمة هذا المعامل نسخة من صنف متفرّع عن الصنف Dialect أو واحدة من السلاسل النصية التي تعيدها الدالة list_dialects()‎.

fmtparams

معامل مفتاحي اختياري، يمكن تحديد قيمته لإعادة تعريف معاملات التنسيق في اللهجة المستخدمة. راجع قسم اللهجات ومعاملات التنسيق للاطلاع على المزيد من المعلومات.

القيمة المعادة

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

أمثلة

يبين المثال التالي طريقة استخدام الدالة:

>>> import csv
>>> with open('eggs.csv', newline='') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...     for row in spamreader:
...         print(', '.join(row))
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

انظر أيضًا

  • الدالة csv.writer()‎: تعيد الدالة كائن كتابة وظيفته تحويل بيانات المستخدم إلى سلاسل نصية مفصولة عن بعضها البعض وكتابتها في الكائن المعطى.

مصادر

صفحة CSV File Reading and Writing في توثيق بايثون الرسمي.