python更改0值

时间:2021-07-06 09:47:46

标签: python arrays json

我正在使用 rest api 获取数据。我想在响应输出“数据”部分用 null(或其他数字)替换所有 0 值。

headers = {
    "cookie": "JSESSIONID=....",
    "Authorization": "Basic ...",
    "Content-Type": "application/json"
}

response = requests.request("POST", url, json=payload, headers=headers, params=querystring, verify=False).text

响应输出:

{
    "status": {
        "total": 1,
        "matched": 1,
        "processed": 1,
        "completed": true,
        "aborted": false,
        "hasErrors": false,
    },
    "result": [
        {
            "signature": "raidOwner#33414-SACONC1ANKT",
            "syn_raidLdev_transferRate": [
                {
                    "type": "timeseries",
                    "name": "Transfer Rate",
                    "unit": "KB/s",
                    "interval": 300,
                    "start": "20210627_230500",
                    "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                }
            ],
        },
        {
            "signature": "raidOwner#33414-BUTTE08",
            "syn_raidLdev_transferRate": [
                {
                    "type": "timeseries",
                    "name": "Transfer Rate",
                    "unit": "KB/s",
                    "interval": 300,
                    "start": "20210627_230500",
                    "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                }
            ],
        },
        {
            "signature": "raidOwner#33414-SREDMMAPP5",
            "syn_raidLdev_transferRate": [
                {
                    "type": "timeseries",
                    "name": "Transfer Rate",
                    "unit": "KB/s",
                    "interval": 300,
                    "start": "20210627_230500",
                    "data": [0, 3, 0, 3, 0, 3, 3, 0, 3, 0, 3, 0],
                }
            ],
        },
        {
            "signature": "raidOwner#33414-BUTTE01",
            "syn_raidLdev_transferRate": [
                {
                    "type": "timeseries",
                    "name": "Transfer Rate",
                    "unit": "KB/s",
                    "interval": 300,
                    "start": "20210627_230500",
                    "data": [
                        1814,
                        1609,
                        1279,
                        1394,
                        1320,
                        1249,
                        2002,
                        1329,
                        1270,
                        1359,
                        1284,
                        3383,
                    ],
                }
            ],
        },
    ],
}

我需要用“数据”中的空值替换所有 0 值:[] 值。我该怎么做?

1 个答案:

答案 0 :(得分:1)

此解决方案仅适用于具有所需结构的数据。

data = {} # omitted

for v in data["result"]:
    for v in v["syn_raidLdev_transferRate"]:
        dt = v["data"]
        for i, v in enumerate(dt):
            if v == 0:
                dt[i] = None

print(data)

此外,还有保存结果数据的方法

import json 

     
with open("result.json", "w") as outfile: 
    json.dump(data, outfile)