我正在尝试将以下字符串转换为字典:"{'key1': 0, 'key2': defaultdict(<class 'int'>, {'total': 9, 'semcor': 9})}"我尝试使用来自ast的literal_eval和来自json的json.loads,但是他们都不能转换它。对于 JSON,我知道它没有 json 结构,但是我不完全理解为什么literal_eval 不起作用。有人可以告诉我是否可以这样做吗?
1 回答

BIG阳
TA贡献1859条经验 获得超6个赞
解析它的一种快速而肮脏的方法是<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'\1', s))
这将返回:
{'key1': 0, 'key2': defaultdict(int, {'total': 9, 'semcor': 9})}
添加回答
举报
0/150
提交
取消