【发布时间】:2016-10-06 18:05:24
【问题描述】:
我在报告文件中有以下字符串:
"Bunch(conditions=['s1', 's2', 's3', 's4', 's5', 's6'], durations=[[30.0], [30.0], [30.0], [30.0], [30.0], [30.0]], onsets=[[172.77], [322.77], [472.77], [622.77], [772.77], [922.77]])"
我想将其转换为Bunch() 对象或dict,以便我可以访问其中的信息(通过my_var.conditions 或my_var["conditions"])。
这对eval() 非常有效:
eval("Bunch(conditions=['s1', 's2', 's3', 's4', 's5', 's6'], durations=[[30.0], [30.0], [30.0], [30.0], [30.0], [30.0]], onsets=[[172.77], [322.77], [472.77], [622.77], [772.77], [922.77]])")
但是我想避免使用它。
我尝试编写了几个字符串替换,以便将其转换为 dict 语法,然后使用 json.loads() 解析它,但这看起来非常非常 hackish,并且一旦我将来遇到任何新字段就会中断字符串;例如:
"{"+"Bunch(conditions=['s1', 's2', 's3', 's4', 's5', 's6'], durations=[[30.0], [30.0], [30.0], [30.0], [30.0], [30.0]], onsets=[[172.77], [322.77], [472.77], [622.77], [772.77], [922.77]])"[1:-1]+"}".replace("conditions=","'conditions':")
你明白了。
你知道是否有更好的方法来解析这个吗?
【问题讨论】:
-
您的最终预期输出究竟是什么?另外,您能否展示一下您迄今为止所做的工作,以了解您的方法是什么样的?
标签: python json parsing dictionary bunch