✍️ یک parser درست تضمین نمیکند داده از نظر مسئله قابل قبول باشد. ممکن است ستون quantity اصلاً در یک رکورد نباشد یا وجود داشته باشد ولی مقدارش رشته خالی باشد. این دو وضعیت علت متفاوتی دارند، اما هر دو قبل از محاسبه باید بررسی شوند. دسترسی مستقیم به کلید گمشده KeyError میدهد و کل پردازش را متوقف میکند.
required = ('product', 'quantity', 'unit_price')
row = {'product': 'دفتر', 'quantity': '2'}
complete = all(key in row for key in required)
print(complete) # False
در این مثال قیمت غایب است؛ نباید بدون اجازه آن را صفر فرض کنیم، چون آمار فروش را عوض میکند. در مرحله بعد، حتی رکورد کامل هم باید از نظر نام محصول و عددها بررسی شود. رویکرد مرحلهای خواناتر است: وجود ستون، پاکسازی متن، تبدیل عدد و سپس شرط دامنه.
خطای رایج، گرفتن همه خطاها و حذف بیسروصدای داده است. در پروژه، هر رکورد خراب رد میشود و یک بار به شمارنده invalid_rows اضافه میشود تا گزارش میزان داده کنارگذاشتهشده را نشان بدهد. این شمارنده تعداد علتها نیست؛ یک ردیف با دو ایراد همچنان یک ردیف نامعتبر است.
فعالیت شما
بررسی وجود product، quantity و unit_price را از مثال بخوان؛ ستون گمشده نباید با قیمت صفر یا مقدار پیشفرض دلخواه جایگزین شود. این گام خواندنی است.