✍️ پروژه را با خواندن درست داده خام شروع میکنیم. چهار ستون ثابت داریم: date، product، quantity و unit_price. در این گام فقط parser را میسازیم؛ رشتهها هنوز خاماند و اعتبارسنجی یا تبدیل عدد در مرحله بعد انجام میشود. حتی دو ردیف کاملاً یکسان میتوانند دو فروش مستقل باشند و نباید با set حذف شوند.
مثلاً دو ردیف «دفتر با تعداد یک و قیمت ده» باید دو رکورد در خروجی باقی بگذارند. اگر محصول داخل نقلقول کاما داشته باشد، DictReader آن را یک مقدار میخواند. خط کاملاً خالی فایل به عنوان فروش ثبت نمیشود. فعلاً ردیفهای دارای سلول را با تعداد ستون درست میگیریم تا فقط مسیر خواندن را محک بزنیم.
قسمت ناقص تابع را کامل کن و فهرست دیکشنریهای خام را درون بلوک فایل بساز. کد این درس مستقل است و نباید انتظار داشته باشد فایل یا تابع درس قبلی حاضر باشد. خطای رایج، تبدیل زودهنگام همه سلولها به int، حذف فروش تکراری یا برگرداندن فقط اولین رکورد است. فایل فقط شامل header و همچنین متن کاملاً خالی هر دو هیچ رکورد فروشی ندارند و باید خروجی خالی بدهند.
فعالیت شما
تابع read_sales_rows(text) متن CSV با header دقیق date,product,quantity,unit_price و ردیفهای چهارسلولی معتبر از نظر قالب میگیرد؛ فایل موقت UTF-8 بساز و با DictReader بخوان. فهرست همه رکوردها با مقادیر رشتهای و ترتیب اصلی را بده؛ ردیف تکراری را حذف نکن، عدد و product را تغییر نده و خط کاملاً خالی را نادیده بگیر. متن خالی یا فقط header برابر []؛ مثال date=2026-01-01، product=دفتر، quantity='2' و unit_price='10' یک رکورد خام دارد.