تمرين إعادة البناء
محول JSON إلى CSV
حوّل قائمة كائنات JSON إلى ملف CSV قياسي.
python
~20 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
import argparse
import csv
import json
from pathlib import Path
def read_rows(path: Path) -> list[dict[str, object]]:
data = json.loads(path.read_text(encoding="utf-8"))
if not isinstance(data, list) or not all(isinstance(row, dict) for row in data):
raise ValueError("JSON must be a list of objects.")
return data
def collect_headers(rows: list[dict[str, object]]) -> list[str]:
headers: list[str] = []
for row in rows:
for key in row:
if key not in headers:
headers.append(key)
return headers
def write_csv(rows: list[dict[str, object]], output: Path) -> None:
headers = collect_headers(rows)
with output.open("w", encoding="utf-8", newline="") as file:
writer = csv.DictWriter(file, fieldnames=headers)
writer.writeheader()
writer.writerows(rows)
def main() -> None:
parser = argparse.ArgumentParser(description="Convert a JSON list of objects to CSV.")
parser.add_argument("input", type=Path)
parser.add_argument("output", type=Path)
args = parser.parse_args()
rows = read_rows(args.input)
write_csv(rows, args.output)
print(f"Wrote {len(rows)} row(s) to {args.output}")
if __name__ == "__main__":
main()اكتب هنا