مثال حلشده
متوسط خط لولهٔ نمره
صورت مسئله
ورودی سه سطری با یک سطر خراب؛ خروجی JSON فقط با سطرهای سالم + گزارش سطر خراب.
راهحل گامبهگام
۴ گام باقی مانده
import csv, json
from pathlib import Path
def pipeline(src, dst):
src, dst = Path(src), Path(dst)
good, bad = [], []
with src.open(encoding="utf-8", newline="") as f:
for lineno, row in enumerate(csv.DictReader(f), start=2):
try:
score = float(row["score"])
if not 0 <= score <= 20:
raise ValueError("خارج از بازه")
good.append({"name": row["name"].strip(), "score": score})
except (ValueError, KeyError, TypeError) as e:
bad.append(f"سطر {lineno}: {e}")
dst.write_text(json.dumps(good, ensure_ascii=False, indent=2), encoding="utf-8")
return bad
print(pipeline("scores.csv", "clean.json"))