# EasyTutorGuide — ETL Chapter 18: REST API extraction # Run: python3 ch-18.py # These examples use only Python standard library. # JavaScript examples in the HTML are verified using Node.js and are not part of this Python file. # EXAMPLE 1: Extract CSV, transform types, and summarize import csv, io csv_text = "id,amount,status\na,18,paid\nb,4,pending\nc,1,paid\n" rows = list(csv.DictReader(io.StringIO(csv_text))) paid = [{"id":r["id"],"amount":int(r["amount"])} for r in rows if r["status"] == "paid"] print("extracted:", len(rows)) print("paid:", paid) print("total:", sum(r["amount"] for r in paid)) # EXAMPLE 2: Deduplicate by a stable business key events = [{"id":"a","value":18},{"id":"b","value":4},{"id":"a","value":1}] latest = {row["id"]: row["value"] for row in events} print("deduplicated:", sorted(latest.items())) print("distinct IDs:", len(latest)) # EXAMPLE 3: Reject invalid source values explicitly raw = ["18", "unknown", "4", "", "1"] valid, rejected = [], [] for item in raw: try: valid.append(int(item)) except ValueError: rejected.append(item) print("valid:", valid) print("rejected:", rejected) print("sum:", sum(valid))