February 8, 2025

Convert String to Dictionary in Python

Converting a string to a dictionary in Python can be useful in various scenarios, such as parsing configuration files or handling data in a structured format. Below are several methods to achieve this, depending on the format of the string and the desired outcome.

1. Using json.loads() for JSON Strings

If the string is in JSON format, you can use the json module to convert it to a dictionary:

import json

# JSON string
json_string = '{"name": "John", "age": 30, "city": "New York"}'

# Convert JSON string to dictionary
dictionary = json.loads(json_string)
print(dictionary)  # Output: {'name': 'John', 'age': 30, 'city': 'New York'}
    

2. Using ast.literal_eval() for String Representations of Dictionaries

If the string is a literal representation of a dictionary, you can use the ast module’s literal_eval() function:

import ast

# String representation of a dictionary
dict_string = "{'name': 'John', 'age': 30, 'city': 'New York'}"

# Convert string to dictionary
dictionary = ast.literal_eval(dict_string)
print(dictionary)  # Output: {'name': 'John', 'age': 30, 'city': 'New York'}
    

3. Using split() and zip() for Custom Formats

If the string uses a custom format, you might need to manually parse and construct the dictionary:

# Custom string format
custom_string = "name:John;age:30;city:New York"

# Convert custom string to dictionary
pairs = custom_string.split(";")
dictionary = dict(pair.split(":") for pair in pairs)
print(dictionary)  # Output: {'name': 'John', 'age': '30', 'city': 'New York'}
    

4. Using Regular Expressions

For more complex formats, you can use regular expressions to extract key-value pairs:

import re

# Complex string format
regex_string = "name=John,age=30,city=New York"

# Convert string to dictionary
pattern = r'(w+)=(w+)'
matches = re.findall(pattern, regex_string)
dictionary = dict(matches)
print(dictionary)  # Output: {'name': 'John', 'age': '30', 'city': 'New'}
    

5. Conclusion

Converting a string to a dictionary in Python depends on the format of the string. JSON strings can be directly parsed with json.loads(), while literal representations can be parsed with ast.literal_eval(). For custom formats, you might need to manually parse the string or use regular expressions.