Python:附加JSON并获得过多的花括号

2024-06-26 13:44:41 发布

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

运行应用程序后,我将历史记录存储在ProcessingJob.json文件中。但是,当我尝试附加JSON文件时,代码会在最新对象周围再写一组{}括号

您将看到在“05-01-2020”节点前后有一个额外的{}括号。我已经多次尝试更正/修复代码,但这是唯一可以让它运行的方法。你对如何改进有什么建议吗

#where write_type == 1 is Dictionary-<date>.json, and write_type == 2 is ProcessingAudit.json
def updateJSON_File(write_type,inputDS,input_jFile, output_jFile):   
with open(input_jFile, 'r') as f: 
    data = json.load(f) 

    i = 1

    if write_type==1:
        for index, row in inputDS.iterrows():
            y = {
                "QueryText": row[0],
                "Subjectmatter": row[1],
                "DateAdded": row[2],
                "SimilarityScore": row[3]                
            }

            data.append(y)

    elif write_type==2:
        while (i<=2): 
            if i==1:
                temp = data['analysis']

                # python object to be appended
                y = {
                    inputDS[1]: {
                        "dictionaryFileName": inputDS[2],
                        "analysisFileName": inputDS[3], 
                        "totalEvaluated": inputDS[4],
                        "netNewLabelledEntries": inputDS[9],
                       "range95": inputDS[5],
                        "range85": inputDS[6],
                        "range75": inputDS[7],
                        "rangeLessThan75": inputDS[8] 
                     }
                }

                # appending data to emp_details  
                temp.append(y)

                i += 1

            elif i==2:
                tmp = data["lastAnalysisCompleted"]
                data["lastAnalysisCompleted"] = inputDS[1]

                i+=1
            else:
                i==3
                print("error")
    else:
        pass

    #update Processing Data JSON file
    with open(output_jFile,'w') as f: 
        json.dump(data, f, indent=1) 

    if write_type == 1:
        return 1
    else:
        return inputDS[3]

下面是ProcessingJob.json文件

{
 "lastAnalysisCompleted": "05-01-2020",
 "analysis": [
  {
   "12-31-2019": {
    "dictionaryFileName": "Dictionary/Dictionary_12-31-2019.json",
    "analysisFileName": "Analysis/Analysis_Output_12-31-2019.xlsx",
    "totalEvalauated": 100,
    "netNewAdded": 10,
    "range95": 1,
    "range80": 3,
    "range75": 1,
    "rangeLessThan75": 5
   },
   "01-01-2020": {
    "dictionaryFileName": "Dictionary/Dictionary_01-01-2020.json",
    "analysisFileName": "Analysis/Analysis_Output_01-01-2020.xlsx",
    "totalEvalauated": 100,
    "netNewAdded": 10,
    "range95": 1,
    "range80": 3,
    "range75": 1,
    "rangeLessThan75": 5
   },
   "04-30-2020": {
    "dictionaryFileName": "Dictionary/Dictionary_04-30-2020.json",
    "analysisFileName": "Analysis/Analysis_Output_04-30-2020.xlsx",
    "totalEvaluated": 289,
    "netNewLabelledEntries": 8,
    "range95": 8,
    "range85": 57,
    "range75": 85,
    "rangeLessThan75": 139
   }
  },
  {
   "05-01-2020": {
    "dictionaryFileName": "Dictionary/Dictionary_05-01-2020.json",
    "analysisFileName": "Analysis/Analysis_Output_05-01-2020.xlsx",
    "totalEvaluated": 297,
    "netNewLabelledEntries": 16,
    "range95": 16,
    "range85": 57,
    "range75": 85,
    "rangeLessThan75": 149
   }
  }
 ]
}

Tags: jsonoutputdatadictionarytypeanalysiswriterow
2条回答

在JSON数据分析中,是一个数组[],其中包含一个匿名对象{}。 数组对应于python list,对象对应于dictionary

如果要向此匿名对象添加新日期,可以按位置选择它作为数组[0]中的第一项,并通过字典键将新项添加到此项

data["analysis"][0][inputDS[1]] = y

y是键输入的数据[1]


y = {
    "dictionaryFileName": inputDS[2],
    "analysisFileName": inputDS[3],
    "totalEvaluated": inputDS[4],
    "netNewLabelledEntries": inputDS[9],
    "range95": inputDS[5],
    "range85": inputDS[6],
    "range75": inputDS[7],
    "rangeLessThan75": inputDS[8]
}

您只需要使用新结果更新列表中的字典

temp[0].update(y)

相关问题 更多 >