String को Dictionary में Convert करना
तरीका 1: ast.literal_eval() (सुरक्षित)
हम ast.literal_eval() का उपयोग यहां String को Python Expression के रूप में Evaluate करने के लिए कर सकते हैं। यह Safely Expression Node या Python Expression वाले String को Evaluate करता है। String या Node में केवल निम्न Python Literal Structures हो सकते हैं: Strings, Numbers, Tuples, Lists, Dicts, Booleans, और None।
>>> import ast
>>> x = ast.literal_eval("{'foo': 'bar', 'hello': 'world'}")
>>> type(x)
<class 'dict'>
तरीका 2: json Module (JSON Strings के लिए)
Dictionaries को JSON Strings के रूप में भी देखा जा सकता है। इस प्रकार हम String को Dict में Convert करने के लिए json Module का भी उपयोग कर सकते हैं।
>>> import json
>>> x = json.loads("{'foo': 'bar', 'hello': 'world'}")
>>> type(x)
<class 'dict'>
महत्वपूर्ण: JSON के लिए Double Quotes आवश्यक हैं: json.loads('{"foo": "bar"}')। Single Quotes काम नहीं करेंगे।
Comparison:
| Method | Input Format | Safety |
|---|---|---|
ast.literal_eval |
Python Literal Syntax | Safe (No Code Execution) |
json.loads |
JSON (Double Quotes) | Safe |
eval() |
Any Python Code | DANGEROUS - Avoid! |
Error Handling के साथ Robust Version:
import ast
import json
def string_to_dict(s):
"""String को Dict में Convert करें, Multiple Formats Try करें"""
# Try JSON पहले
try:
return json.loads(s)
except json.JSONDecodeError:
pass
# Try Python Literal
try:
return ast.literal_eval(s)
except (ValueError, SyntaxError):
pass
raise ValueError(f"Cannot parse as dict: {s}")