在使用here中的zmdp解算器时,我遇到了一种以前从未见过的时髦文件格式,它使用=>
进行赋值。我无法从包文档中找到它的格式(它说它是一种“策略”格式,但必须基于更通用的格式)
{
policyType => "MaxPlanesLowerBound",
numPlanes => 7,
planes => [
{
action => 2,
numEntries => 3,
entries => [
0, 18.7429,
1, 18.7426,
2, 21.743
]
},
### more entries ###
{
action => 3,
numEntries => 3,
entries => [
0, 20.8262,
1, 20.8261,
2, 20.8259
]
}
]
}
我研究了很多关于解析这些文件的简单方法(用Python),还阅读了this blog post,它有各种各样的词法和解析选项(在我的例子中,最有前途的工具似乎是parsimonious和parsy)。
然而,无论我能想到什么样的解决方案,都会让人觉得我在重新发明方向盘,而词法分析似乎对我正在尝试的工作来说是一种过度的杀伤力。
我还发现了thisstackoverflow问题,这似乎与使用=>
的格式有关。然而,在代码方面,由于懒惰和极简主义,我不太喜欢regex解决方案。我的直觉告诉我,必须有一个3-4行的解决方案来将输入文件写入python dict或类似有用的格式。特别是,我怀疑这已经是一些我不知道的格式的标准语法(显然不是csv、json、yaml或xml)
因此,问题是:上述文件格式是标准文件格式吗?如果是,是什么格式?
如果不是,我如何在Python3中优雅而紧凑地解析这个文件,也就是说,不必对每个关键字进行regexing
除了替换'=>;'之外,我看不出与json有什么区别使用“:”并添加顶级键
在看到上面的评论后编辑
不带引号的键确实不是json标准的一部分。要解决这个问题,可以使用here所描述的库,也可以对其进行正则化
相关问题 更多 >
编程相关推荐