حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش کار با فایل در پایتون؛ CSV، JSON و گزارش‌گیری

خواندن CSV فروش در پایتون؛ حفظ ردیف‌های مستقل

پروژه CSV به JSON با پایتون؛ گزارش فروش معتبر و قابل بازخوانی · 0٪

✍️ پروژه را با خواندن درست داده خام شروع می‌کنیم. چهار ستون ثابت داریم: 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' یک رکورد خام دارد.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

import tempfile
from pathlib import Path
import csv

def read_sales_rows(text):
    with tempfile.TemporaryDirectory() as folder:
        path = Path(folder) / 'sales.csv'
        path.write_text(text, encoding='utf-8')
        with open(path, encoding='utf-8', newline='') as file:
            # TODO: materialize every raw sale dictionary
            return []