如何将值为默认字典的字典字符串转换为实际字典
How to convert a dict string with value default dict to an actual dict
我正在尝试将以下字符串转换为字典:
"{'key1': 0, 'key2': defaultdict(<class 'int'>, {'total': 9, 'semcor': 9})}"
我尝试使用 ast 的 literal_eval 和 json 的 json.loads,但是其中 none 可以转换它。对于 JSON 我知道它没有 json 结构,但是我不完全理解为什么 literal_eval 不起作用。
有人可以告诉我是否可以这样做吗?
一种快速而肮脏的解析方法是用实际的 class 名称替换 <class 'int'>
符号,然后 eval
字符串:
from collections import defaultdict
import re
s = '''"{'key1': 0, 'key2': defaultdict(<class 'int'>, {'total': 9, 'semcor': 9})}"'''
eval(re.sub(r"<class '(\w+)'>", r'', s))
这个returns:
{'key1': 0, 'key2': defaultdict(int, {'total': 9, 'semcor': 9})}
我正在尝试将以下字符串转换为字典:
"{'key1': 0, 'key2': defaultdict(<class 'int'>, {'total': 9, 'semcor': 9})}"
我尝试使用 ast 的 literal_eval 和 json 的 json.loads,但是其中 none 可以转换它。对于 JSON 我知道它没有 json 结构,但是我不完全理解为什么 literal_eval 不起作用。
有人可以告诉我是否可以这样做吗?
一种快速而肮脏的解析方法是用实际的 class 名称替换 <class 'int'>
符号,然后 eval
字符串:
from collections import defaultdict
import re
s = '''"{'key1': 0, 'key2': defaultdict(<class 'int'>, {'total': 9, 'semcor': 9})}"'''
eval(re.sub(r"<class '(\w+)'>", r'', s))
这个returns:
{'key1': 0, 'key2': defaultdict(int, {'total': 9, 'semcor': 9})}