Photo by Michael Dziedzic / Unsplash

TIL - Python's ast.literal_eval Is the Safe Alternative to eval()

Today I Learned Jun 7, 2026

Using eval() on untrusted strings can execute malicious code. ast.literal_eval safely evaluates strings containing Python literals (dicts, lists, tuples, strings, numbers, booleans, and None).

import ast

user_input = "{'name': 'Alice', 'roles': ['admin', 'user']}"

# Safe: only parses literals. Will fail on functions or variables.
parsed = ast.literal_eval(user_input)

print(parsed['roles'])  # ['admin', 'user']

Always use ast.literal_eval when you need to parse strings that look like Python data structures.

Tags