use*_*817 3 python parsing defaultdict
我用一个简单的打印命令转储了多个defaultdict,如下所示:
defaultdict(<type 'list'>, {'actual': [20000.0, 19484.0, 19420.0], 'gold': [20000.0, 19484.0, 19464.0]})
Run Code Online (Sandbox Code Playgroud)
我可以使用一些标准的解析器来检索它们吗?我知道我应该使用pickle,但生成这些defaultdict的代码非常慢,我想避免重新运行它.
如果始终<type 'list'>使用defaultdict的类型,则可以使用以下内容:
from collections import defaultdict
s = """
defaultdict(<type 'list'>, {'actual': [20000.0, 19484.0, 19420.0], 'gold': [20000.0, 19484.0, 19464.0]})
"""
data = eval(s.replace("<type 'list'>", 'list'))
Run Code Online (Sandbox Code Playgroud)
人们会告诉你这eval()是不安全和邪恶的,但如果有人试图将有害代码注入您转储的数据,他们可能就像编辑源代码一样容易.如果您从中获取此数据的文本文件比源代码更易于访问,那么您可能不想使用此方法.
如果默认分区有多种类型,但它们都是内置类型(或者易于repr在类型名称之间进行转换),那么您仍然可以将此方法用于多个替换,例如:
for rep, typ in ((repr(list), 'list'), (repr(dict), 'dict')):
s = s.replace(rep, typ)
data = eval(s)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |