我正在使用 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 值:[] 值。我该怎么做?
答案 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)