
برای پاکسازی CSV در پایتون، ستونهای مورد انتظار و قواعد معتبر بودن هر ردیف را قبل از وارد کردن داده مشخص کنید. یک فایل کاتالوگ معمولاً شناسه، نام و موجودی دارد. گزارش خطا باید شمارهٔ ردیف و دلیل رد شدن را نشان دهد تا همکار بتواند منبع را اصلاح کند.
قرارداد ورودی را بنویسید
در نمونهٔ زیر شناسه الزامی و یکتا است، موجودی عدد صحیح غیرمنفی است و مقدار صفر معتبر محسوب میشود. اگر فایل از نرمافزار صفحهگسترده صادر شده، خواندن UTF-8 با BOM احتمالی را در نظر بگیرید. وقتی جداکننده از قبل مشخص است، آن را در قرارداد ورودی ثابت کنید. خواندن با ماژول CSV باعث میشود جداکنندههای داخل فیلد نقلقولشده هم درست تفسیر شوند.
import csv
valid, rejected, seen = [], [], set()
with open("inventory.csv", encoding="utf-8-sig", newline="") as source:
reader = csv.DictReader(source)
if not {"sku", "stock"}.issubset(reader.fieldnames or []):
raise ValueError("Missing required columns")
for row in reader:
sku = (row["sku"] or "").strip()
try:
stock = int((row["stock"] or "").strip())
if not sku or sku in seen or stock < 0:
raise ValueError("Invalid SKU or stock")
except ValueError as error:
rejected.append((reader.line_num, str(error)))
continue
seen.add(sku)
valid.append({"sku": sku, "stock": stock})
قبل از ذخیره چه چیزهایی را کنترل کنیم؟
تعداد ورودی، تعداد ردیف معتبر و تعداد ردشده را در گزارش بیاورید. در نمونهٔ بالا اولین نسخهٔ معتبر شناسه پذیرفته میشود. برای پروژهای که هر شناسهٔ تکراری باید بررسی شود، همهٔ ردیفهای مرتبط را به گزارش ارجاع دهید. اگر فایل بعداً در نرمافزار صفحهگسترده باز میشود، نحوهٔ نمایش دادههای متنی را بررسی کنید تا محتوای ورودی بهعنوان فرمول اجرا نشود.
یک نسخه از فایل ورودی را حفظ کنید. ابتدا خروجی را در فایل جدید بنویسید یا وارد کردن را در محیط آزمایشی انجام دهید. آزمونهای ردیف خالی، عدد منفی، مقدار صفر، شناسهٔ تکراری و نام ستون اشتباه را اجرا کنید. برای فایلهای بزرگ، ردیف معتبر و خطا را میتوان حین خواندن در دو خروجی نوشت تا مصرف حافظه رشد نکند. راهنمای طراحی تست · مستندات ماژول CSV پایتون