"127.0.0.1": {
"nmaprun": {
"@scanner": "nmap",
"@args": "nmap -v -sS -sV -sC -A -O -oX nmap 127.0.0.1 1-1024",
"@start": "1645467733",
"@startstr": "Mon Feb 21 23:52:13 2022",
"@version": "7.91",
"@xmloutputversion": "1.05",
"scaninfo": {
"@type": "syn",
"@protocol": "tcp",
"@numservices": "1000",
"@services": "1,3-4,6-7,9,13,17,19-26,
},
"verbose": {
"@level": "1"
},
"debugging": {
"@level": "0"
},
"runstats": {
"finished": {
"@time": "1645467744",
"@timestr": "Mon Feb 21 23:52:24 2022",
"@summary": "Nmap done at Mon Feb 21 23:52:24 2022; 1 IP address (1 host up) scanned in 12.14 seconds",
"@elapsed": "12.14",
"@exit": "success"
}
}
}
}
}
我有來自 Nmap 的掃描輸出。我想決議整個 JSON 并將 '@' 字符替換為 ''。我怎么能在python中做到這一點?
uj5u.com熱心網友回復:
dic = {"127.0.0.1": {
"nmaprun": {
"@scanner": "nmap",
"@args": "nmap -v -sS -sV -sC -A -O -oX nmap 127.0.0.1 1-1024",
"@start": "1645467733",
"@startstr": "Mon Feb 21 23:52:13 2022",
"@version": "7.91",
"@xmloutputversion": "1.05",
"scaninfo": {
"@type": "syn",
"@protocol": "tcp",
"@numservices": "1000",
"@services": "1,3-4,6-7,9,13,17,19-26",
},
"verbose": {
"@level": "1"
},
"debugging": {
"@level": "0"
},
"runstats": {
"finished": {
"@time": "1645467744",
"@timestr": "Mon Feb 21 23:52:24 2022",
"@summary": "Nmap done at Mon Feb 21 23:52:24 2022; 1 IP address (1 host up) scanned in 12.14 seconds",
"@elapsed": "12.14",
"@exit": "success"
}
}
}
}}
def remove_at(d):
if isinstance(d, dict):
return {k.lstrip('@'): remove_at(v) for k, v in d.items()}
elif isinstance(d, list):
return [remove_at(v) for v in d]
else:
return d
print(remove_at(dic))
uj5u.com熱心網友回復:
一種可能的方法是迭代鍵,然后將專案彈出給定鍵,并在沒有@的情況下將其分配給鍵,如果密鑰開始@,因為您有嵌套結構,則需要遞回遞回以下鍵
def recursive_replace(data):
for key in data.keys():
if key.startswith('@'):
data[key[1:]] = data.pop(key)
key = key[1:]
if isinstance(data[key], dict):
data[key]=recursive_replace(data[key])
return data
輸出:
>>> #assuming data holds the dictionary
>>> recursive_replace(data)
{
"127.0.0.1": {
"nmaprun": {
"scaninfo": {
"type": "syn",
"protocol": "tcp",
"numservices": "1000",
"services": "1,3-4,6-7,9,13,17,19-26,"
},
"verbose": {
"level": "1"
},
"debugging": {
"level": "0"
},
"runstats": {
"finished": {
"time": "1645467744",
"summary": "Nmap done at Mon Feb 21 23:52:24 2022; 1 IP address (1 host up) scanned in 12.14 seconds",
"elapsed": "12.14",
"exit": "success",
"timestr": "Mon Feb 21 23:52:24 2022"
}
},
"scanner": "nmap",
"start": "1645467733",
"startstr": "Mon Feb 21 23:52:13 2022",
"version": "7.91",
"xmloutputversion": "1.05",
"args": "nmap -v -sS -sV -sC -A -O -oX nmap 127.0.0.1 1-1024"
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436478.html
下一篇:使用pegen開發決議器:無輸出
