【发布时间】:2021-10-10 21:04:52
【问题描述】:
我曾尝试使用 jsondiff,但输出不符合我的要求。
with open('C/abc/file1.json') as f:
a= json.load(f)
with open('C/abc/file2.json') as s:
b= json.load(s)
c= diff(a,b)
我要在 Excel 表中打印的是 Delta,文件 1 中存在但文件 2 中没有的东西,文件 1 中存在但文件 2 中更改的东西,文件 2 中不存在的新添加的东西file1,如果可能的话,还有行号。 因此,如果有人知道如何实现这一点,请分享它,如果需要更多说明,请告诉我。
由于限制,我无法粘贴文件的原始内容,但这些文件中的内容看起来如何我已经放在下面了。
file1.json
{
"Indicator": {
"key1": "value 1",
"key2": "value 2",
"Name": "value 3",
"key4": "value 4",
"Description": "some text",
"Subformulas": {
"some key": "some sub-formula"
},
"Formula": "some formula"
}
}
file2.json
{
"Indicator": {
"key1": "value 1",
"key2": "value 2",
"key3":"value changed",
"Name": "value 3",
"key4": "value 4",
"Description": "some text",
"Subformulas": {
"some key": "change in some sub-formula"
},
"Formula": "some formula"
}
}
我已经用它来打印 Excel 工作表中的差异。我在 Stack Overflow 中的一个问题的答案中找到了代码,但它没有将差异打印到 Excel 工作表中......在终端上它是显示差异,但在 excel 表中却不是。所以我认为我做错了什么,我不知道如何纠正。
c.items()
c1=list(c.items())
workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
order=sorted(c.keys())
for key in order:
row += 1
#print(key)
worksheet.write(row, col, key)
for item in c[key]:
#print(item,row, col+1)
worksheet.write(row, col + 1, item)
col += 1
col = 0
workbook.close()
【问题讨论】:
-
json文件的结构是什么?你能发布数据样本吗?
-
请求库/软件在 StackOverflow 上是特别离题的。展示你诚实的尝试,以获得你需要的输出作为你的问题中的代码 - 即不仅仅是你说的代码是不充分的。
-
difflib在标准库中,所以我猜它仍然是主题 -
@RJAdriaansen 我已经更新了问题,抱歉,由于规定无法粘贴.json文件的原始内容,我只是删除了内容但格式相同。
-
@balmy 我想我并没有在这里问任何题外话,只是当我试图打印到 excel 表时我遇到了问题......我试图在任何地方对 xlsxwriter 进行研究但我不太明白如何使用它
标签: python json xlsxwriter delta