Recently, I was working on a Python project where I needed to convert a string representation of an object back into an actual object. This is a common challenge, especially when dealing with data from APIs, JSON responses, or configuration files.
Converting strings to objects is a crucial skill for any Python developer. While Python makes it seem simple, there are several approaches depending on your specific needs.
In this article, I’ll walk you through four proven methods to convert strings to Python objects, from basic built-in functions to more specialized approaches. So let’s dive in!
Convert String To Object In Python
String to object conversion is the process of transforming a string representation of data into an actual Python object that you can work with programmatically.
For example, if you have the string "{'name': 'John', 'age': 30}", you might want to convert it to an actual Python dictionary so you can access data['name'] directly.
This conversion is essential when dealing with:
- Data received from web APIs
- Contents loaded from configuration files
- Serialized objects stored in databases
- User inputs that represent structured data
Now, let’s look at different methods to accomplish this conversion.
Read Convert String to Function in Python
Method 1: Use ast.literal_eval()
The ast.literal_eval() function from Python’s Abstract Syntax Tree module is one of the safest ways to convert a string to a Python object.
It works by parsing the string as a Python literal and returning the corresponding Python object. This function only evaluates literals like dictionaries, lists, tuples, strings, numbers, and booleans.
Here’s how to use it:
import ast
# String representation of a dictionary
dict_string = "{'name': 'John', 'city': 'New York', 'age': 30}"
# Convert string to dictionary object
dict_object = ast.literal_eval(dict_string)
# Now you can work with it as a regular dictionary
print(dict_object['name'])
print(dict_object['city'])
print(type(dict_object))Output:
John
New York
<class 'dict'>I executed the above example code and added the screenshot below.

This method is safe because it only evaluates literals and won’t execute arbitrary code that might be malicious.
Check out String with Comma to Float in Python
Method 2: Use json.loads()
If your string is in JSON format, the json.loads() function is perfect for converting it to a Python object.
JSON (JavaScript Object Notation) is widely used for data interchange, and Python’s json module makes it easy to work with:
import json
# JSON string
json_string = '{"name": "Sarah", "state": "California", "skills": ["Python", "SQL", "AWS"]}'
# Convert JSON string to Python object
python_object = json.loads(json_string)
# Access the data
print(python_object['name'])
print(python_object['skills'][0])
print(type(python_object))
# You can also work with nested structures
for skill in python_object['skills']:
print(f"Skill: {skill}")Output:
Sarah
Python
<class 'dict'>
Skill: Python
Skill: SQL
Skill: AWSI executed the above example code and added the screenshot below.

Note that JSON has some limitations compared to Python’s native literals:
- JSON keys must be strings
- JSON doesn’t support Python tuples or sets
- JSON uses
nullinstead ofNone
But for most web API and data exchange purposes, json.loads() is an excellent choice.
Read How to Convert a String to Base64 in Python
Method 3: Custom Class Deserialization
\Sometimes you need to convert Python strings into instances of your custom classes. This is common in object-oriented programming when you want to rebuild complex objects.
Here’s how to implement this approach:
class Person:
def __init__(self, name, age, location):
self.name = name
self.age = age
self.location = location
def __str__(self):
return f"Person(name={self.name}, age={self.age}, location={self.location})"
@classmethod
def from_string(cls, string):
# Remove potential whitespace, quotes, etc.
string = string.strip().strip("'\"")
# Parse the string - assuming format like "name,age,location"
parts = string.split(',')
if len(parts) != 3:
raise ValueError("String format incorrect")
name = parts[0]
age = int(parts[1])
location = parts[2]
# Create and return a new instance
return cls(name, age, location)
# Example usage
person_string = "Alice,28,Texas"
person_object = Person.from_string(person_string)
print(person_object)
print(person_object.name)
print(type(person_object))Output:
Person(name=Alice, age=28, location=Texas)
Alice
<class '__main__.Person'>I executed the above example code and added the screenshot below.

This method gives you complete control over how strings are converted to your objects, which is particularly useful for complex data structures or when dealing with specific string formats.
Check out Convert String to List in Python Without Using Split
Method 4: Use eval() (With Caution)
The eval() function can convert a string to a Python object by evaluating it as a Python expression. While powerful, it comes with significant security risks:
# String representation of a list
list_string = "[1, 2, 3, 4, 5]"
# Convert to list object
list_object = eval(list_string)
print(list_object) # Output: [1, 2, 3, 4, 5]
print(type(list_object)) # Output: <class 'list'>I rarely recommend using eval() because it can execute arbitrary code. If the string comes from an untrusted source, it could contain malicious code that would be executed.
For example, this harmless-looking code could delete files if the string contained __import__('os').remove('important_file.txt').
Almost always, ast.literal_eval() or json.loads() are safer alternatives.
Check out Convert Scientific Notation String to Float in Python
Practical Example: Convert Configuration Settings
Let’s look at a practical example where string-to-object conversion is useful. Imagine we’re working with a configuration file for a data processing application:
import ast
# This could come from a config file
config_string = """
{
'database': {
'host': 'db.example.com',
'port': 5432,
'username': 'admin',
'timeout': 30
},
'processing': {
'batch_size': 1000,
'threads': 4,
'enabled_modules': ['validation', 'transformation', 'export']
},
'debug': True
}
"""
# Convert to a Python dictionary
config = ast.literal_eval(config_string)
# Now we can access configuration parameters directly
db_host = config['database']['host']
batch_size = config['processing']['batch_size']
debug_mode = config['debug']
# We can even iterate through nested structures
print("Enabled modules:")
for module in config['processing']['enabled_modules']:
print(f"- {module}")This approach allows us to store complex configuration in a human-readable format while still being able to use it programmatically in our Python code.
Read Convert String to XML in Python
Handle Errors During Conversion
When converting strings to objects, it’s important to handle potential errors, especially if the input comes from external sources:
import ast
import json
def safe_convert(string_data):
"""Safely convert a string to a Python object."""
try:
# First try ast.literal_eval (handles more Python types)
return ast.literal_eval(string_data)
except (SyntaxError, ValueError):
try:
# Then try json.loads (more forgiving with syntax)
return json.loads(string_data)
except json.JSONDecodeError:
# If all fails, return the original string
print("Warning: Could not convert string to object.")
return string_data
# Examples
print(safe_convert("{'a': 1, 'b': 2}")) # Works with ast.literal_eval
print(safe_convert('{"a": 1, "b": 2}')) # Works with json.loads
print(safe_convert("Not a valid object")) # Returns original stringThis defensive approach ensures your program won’t crash when encountering malformed input strings.
I’ve found that working with string-to-object conversion is a common task in many Python projects, from web development to data science. Mastering these techniques will significantly enhance your ability to work with different data formats and sources.
Remember to always use the safest method appropriate for your use case, and validate the converted objects if they come from untrusted sources.
Other Python guides you may also like:
- Convert String to Variable in Python
- Convert String to Tuple in Python
- Convert String to Path in Python
- Convert String to Array in Python

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.