✍️ کار با شماره ستونها زود شکننده میشود: اگر product همیشه خانه صفر باشد، باید این قرار را همه جای کد حفظ کنیم. DictReader سطر اول را نام ستونها در نظر میگیرد و هر رکورد را دیکشنری میکند. به این ترتیب به جای حفظ شماره ستون، row['product'] را میخوانیم.
مثلاً برای عنوان name,city و ردیف «سارا,شیراز»، یک دیکشنری با کلیدهای name و city داریم. ردیف عنوان در خروجی دادهها تکرار نمیشود. اگر فقط عنوان وجود داشته باشد، فهرست رکوردها خالی است. در این فعالیت همه ردیفها تعداد ستون درست دارند و هنوز هیچ تبدیل عددی یا حذف فاصله انجام نمیدهیم.
کد اولیه نمونه CSV را داخل فایل موقت مینویسد. قسمت خواندن را با csv.DictReader کامل کن و رکوردها را به فهرست تبدیل کن تا بعد از بسته شدن فایل قابل استفاده باشند. خطای رایج، برگرداندن خود reader است؛ آن یک شیء پیمایشگر وابسته به فایل است و جواب JSON این تمرین نیست. همچنین نام ستونها را بهدلخواه فارسی یا کوتاه نکن؛ کلیدها باید دقیقاً همان عنوانهای ورودی بمانند. فایل خالی هم هیچ رکوردی ندارد.
فعالیت شما
تابع csv_records(text) متن CSV معتبر با header یکتا و تعداد سلول درست را در فایل موقت UTF-8 بسازد و با DictReader بخواند؛ فهرست دیکشنریهای رشتهای را برگرداند. header رکورد داده نیست؛ فقط header یا متن خالی خروجی [] دارد. هیچ strip یا تبدیل نوع انجام نده. برای 'product,quantity\nدفتر,2\n' خروجی [{'product':'دفتر','quantity':'2'}] است.