تمرين إعادة البناء
منظف تكرار CSV
أنشئ ملف CSV جديداً بعد إزالة التكرارات حسب عمود تختاره.
python
~25 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
import argparse
import csv
from pathlib import Path
def deduplicate(input_path: Path, output_path: Path, key: str) -> tuple[int, int]:
seen = set()
kept = 0
skipped = 0
with input_path.open(newline="", encoding="utf-8") as source:
reader = csv.DictReader(source)
if not reader.fieldnames or key not in reader.fieldnames:
raise SystemExit(f"Missing CSV column: {key}")
with output_path.open("w", newline="", encoding="utf-8") as target:
writer = csv.DictWriter(target, fieldnames=reader.fieldnames)
writer.writeheader()
for row in reader:
marker = row.get(key, "")
if marker in seen:
skipped += 1
continue
seen.add(marker)
writer.writerow(row)
kept += 1
return kept, skipped
def main() -> None:
parser = argparse.ArgumentParser(description="Write a deduplicated CSV copy by key column.")
parser.add_argument("input", type=Path)
parser.add_argument("output", type=Path)
parser.add_argument("--key", required=True)
args = parser.parse_args()
kept, skipped = deduplicate(args.input, args.output, args.key)
print(f"Kept {kept} rows, skipped {skipped} duplicates")
if __name__ == "__main__":
main()اكتب هنا