python解析:什么文件格式使用`=>`或者如何将自定义输入文件读取到di

2024-04-25 22:07:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用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,它有各种各样的词法和解析选项(在我的例子中,最有前途的工具似乎是parsimoniousparsy)。
然而,无论我能想到什么样的解决方案,都会让人觉得我在重新发明方向盘,而词法分析似乎对我正在尝试的工作来说是一种过度的杀伤力。
我还发现了thisstackoverflow问题,这似乎与使用=>的格式有关。然而,在代码方面,由于懒惰和极简主义,我不太喜欢regex解决方案。我的直觉告诉我,必须有一个3-4行的解决方案来将输入文件写入python dict或类似有用的格式。特别是,我怀疑这已经是一些我不知道的格式的标准语法(显然不是csv、json、yaml或xml)

因此,问题是:上述文件格式是标准文件格式吗?如果是,是什么格式?
如果不是,我如何在Python3中优雅而紧凑地解析这个文件,也就是说,不必对每个关键字进行regexing


Tags: 文件文档标准here格式action解决方案策略
1条回答
网友
1楼 · 发布于 2024-04-25 22:07:55

除了替换'=>;'之外,我看不出与json有什么区别使用“:”并添加顶级键

filestr.replace(‘=>’, ‘:’)
dictionary = json.loads(filestr)

在看到上面的评论后编辑

不带引号的键确实不是json标准的一部分。要解决这个问题,可以使用here所描述的库,也可以对其进行正则化

相关问题 更多 >