我正在尝试将以下字符串转换为字典:
"{'key1': 0, 'key2': defaultdict(<class 'int'>, {'total': 9, 'semcor': 9})}"
我尝试使用来自ast的literal_eval和来自json的json.loads,但是他们都无法将其转换。对于JSON,我知道它没有json结构,但是我不完全理解为什么literal_eval无法正常工作。
有人可以告诉我是否可以这样做?
答案 0 :(得分:2)
一种快速而肮脏的解析方法是用实际的类名替换<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})}