How to Parse Data in Python: A Beginner's Helper
This helper parses a JSON payload, extracts user names, emails, and signup dates, then summarizes the results.
Python code
42 linesimport json
from datetime import datetime
from typing import Dict, List
def parse_data(payload: str) -> Dict[str, List]:
"""Parse a JSON payload and extract useful fields."""
raw = json.loads(payload)
users = raw.get("users", [])
parsed = {
"names": [],
"emails": [],
"signup_dates": [],
}
for user in users:
parsed["names"].append(user.get("name", "unknown"))
parsed["emails"].append(user.get("email", "no-email"))
date_str = user.get("signup_date", "1970-01-01")
parsed["signup_dates"].append(datetime.fromisoformat(date_str))
return parsed
def summarize_parsed(data: Dict[str, List]) -> str:
"""Generate a short summary of the parsed results."""
count = len(data["names"])
newest = max(data["signup_dates"]).date().isoformat()
return f"Parsed {count} users; newest signup on {newest}."
if __name__ == "__main__":
sample_payload = json.dumps({
"users": [
{"name": "Ana", "email": "ana@example.com", "signup_date": "2023-05-01"},
{"name": "Bob", "email": "bob@example.com", "signup_date": "2024-02-14"},
]
})
result = parse_data(sample_payload)
print(summarize_parsed(result))
Output
Parsed 2 users; newest signup on 2024-02-14.
How it works
The parse_data function uses json.loads to convert the JSON string into a Python dictionary. It safely accesses nested fields with .get() to avoid KeyError. datetime.fromisoformat converts date strings to datetime objects for easy comparison. The summarize_parsed function then counts entries and finds the newest date using max. This modular approach separates parsing from summarizing for clarity.
Common mistakes
- Using `json.load` instead of `json.loads` when working with strings
- Assuming all users have all fields without using `.get()` defaults
- Forgetting to convert date strings to datetime objects before comparing
Variations
- Use `pandas` with `pd.json_normalize` for more complex nested payloads
- Add error handling with `try/except json.JSONDecodeError` for malformed input
Real-world use cases
- Parsing user registration events from an API webhook for analytics.
- Extracting user data from exported JSON files for database migration.
- Reading SaaS platform audit logs to generate compliance reports.
Sponsored
More from Data pipelines & processing
- Add a UUID Surrogate Key to Each Row in a CSV with Python easy
- Attach Source File Metadata to Records in Python easy
- Build a Python Utility That Detects Duplicate Records Across Multiple Excel Sheets medium
- Check Null Rate Threshold in PySpark DataFrame medium
- Count Records Processed per Category in Python easy
- Create Data Helper Functions in Python for Beginners easy
Keep learning
Related tutorials and quizzes for this topic.