【发布时间】:2018-10-26 16:22:46
【问题描述】:
我有一个让我难过的编程案例。我不是在寻找代码——我在寻找逻辑建议,对此我不知所措。
我尝试了几种不同的方法,但似乎没有什么能真正具体地制定出来。
这是用于回归测试。我有两个文件具有两种非常不同格式的相同数据。我需要比较数据并使过程自动化。我会在稍后阶段担心“差异”。如果我可以从两个可以比较的文件中获得数据,那应该不会太难。
文件 1 基本上包含 JSON 数据。文件中还有其他垃圾,但可以删除。这是数据的样子:
{
"Chan-1" : [ {
"key1" : "val1",
"key2" : val2,
"key3" : val3,
}, {
"key1" : "val1",
"key2" : val2,
"key3" : val3,
} ]
}
文件 2 基本上具有我可以破译为带有项目的 python 列表的内容。每个项目都有key=value格式的数据,用逗号分隔,括号中。
[
spacecraft.telemetry.channel(key1=val1,key2="val2",key3=val3),
spacecraft.telemetry.channel(key1=val1,key2="val2",key3=val3)
]
一个文件中的每个块都对应于另一个文件中的块,并且基本上如果要进行差异化。换句话说:
{
"key1" : "val1",
"key2" : val2,
"key3" : val3,
}
来自文件 1 将(或应该)具有与文件 2 相同的键值对:
(key1=val1,key2="val2",key3=val3)
顺序也类似。
这两个文件都包含大量用于“Chan-1”对象的键值对,例如,我截断了数据量。每个区块大约有16个键值对,大约有400个区块。
我尝试处理文件 2 以使其看起来像 JSON 数据。 我尝试处理文件 1 以使其看起来更像文件 2。 我还尝试将这两个文件完全解析为第三种格式。 但是我对这两个概念都没有深入了解——有些东西告诉我我遗漏了一些东西,考虑到我们已经有一个 JSON 文件,这不应该这么难。
如果有人能给我一些关于此处遵循的逻辑的建议,我将不胜感激 - 似乎是最好的路线,以及应该采用什么样的逻辑来实现这一点。
谢谢。
【问题讨论】:
-
我会解析两者并将键值对添加到某种数据库中进行检查(或者只是输出为
key:value,对它们进行排序并在结果上使用diff(1))。跨度>
标签: python json list dictionary diff