Python-比较2种不同的输出格式-逻辑
我有一个编程案例,这让我很困惑。我并不一定要寻找代码——我在寻找逻辑建议,对此我不知所措 我试过几种不同的方法,但似乎都没有具体的方法 这是一个回归测试。我有两个文件,它们的数据相同,格式非常不同。我需要比较数据并使过程自动化。我将在稍后阶段担心“差异”。如果我能从两个文件中得到可以比较的数据,应该不会太难 文件1基本上包含JSON数据。文件中还有其他可以删除的垃圾。这就是数据的样子:Python-比较2种不同的输出格式-逻辑,python,json,list,dictionary,diff,Python,Json,List,Dictionary,Diff,我有一个编程案例,这让我很困惑。我并不一定要寻找代码——我在寻找逻辑建议,对此我不知所措 我试过几种不同的方法,但似乎都没有具体的方法 这是一个回归测试。我有两个文件,它们的数据相同,格式非常不同。我需要比较数据并使过程自动化。我将在稍后阶段担心“差异”。如果我能从两个文件中得到可以比较的数据,应该不会太难 文件1基本上包含JSON数据。文件中还有其他可以删除的垃圾。这就是数据的样子: { "Chan-1" : [ { "key1" : "val1", "key2" : val2, "key3"
{
"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文件,这不应该这么难
如果有人能给我一些关于这里的逻辑的建议,我将不胜感激——什么似乎是最好的路线,以及应该用什么样的逻辑来实现这一点
谢谢。对于每个文件:
- 提取对象的“列表”
- 将列表中的每个对象转换为字典
- 对于文件1,此步骤基本上是“将JSON转换为dict”
- 对于文件2,这将涉及仅提取
字符串,在key=value
上拆分,并通过字典理解将结果转换为dict=
此时,您有两个字典列表。您的问题似乎表明您可以假设列表以相同的方式排序,因此现在您可以检查一个列表中的每个dict是否与另一个列表中相同位置的dict匹配。查看
zip(列表1、列表2)
;这应该会使这一步更容易。我将解析这两个键-值对,并将它们添加到某种数据库中进行检查(或者只输出为key:value
,对它们进行排序,并对结果使用diff(1)
),这似乎是一种合乎逻辑的方法。我知道我将JSON转换成了dict,但我想我在文件2作为字典列表时遇到了一些问题。不过你给了我一个很好的方向,我要再给你一次机会。谢谢