"Admins": [
{
"Admin_name": "admin",
"Admin_pass": "admin"
},
{
"Admin_name": "administrator",
"Admin_pass": "password"
}
],
"Teachers": [
{
"Name": "Yersin Zhanabekov",
"Course": "Physical Culture",
"Login": "Yersin.Zhanabekov",
"Pass": "Yersin123",
"Mark": null
},
{
"Name": "Kayrat Mynbayev",
"Course": "Theory of Probability and Mathematical Statistics",
"Login": "Kayrat.Mynbayev",
"Pass": "Kayrat123",
"Mark": null
},
{
"Name": "Magzhan Ikram",
"Course": "Python",
"Login": "Magzhan .Ikram",
"Pass": "Magzhan123",
"Mark": null
},
{
"Name": "Mag",
"Course": "Python",
"Login": "Magzhan .Ikram",
"Pass": "Magzhan123",
"Mark": null
}
], },
{
"Name": "Mag",
"Course": "Python",
"Login": "Magzhan",
"Pass": "Magzhan123",
"Mark": null
}
],
with open('dict.json', 'r') as rf:
dataRead = json.load(rf)
log = input("Your username: ")
pas = input("Your password: ")
for name in dataRead['Admins']:
if log == name['Admin_name'] and pas == name['Admin_pass']:
y = {'Name': "Hello"}
dataRead['Teachers'][3]['Name'].pop()
dataRead['Teachers'][3]['Name'].append(y)
with open('dict.json', 'w') as rf:
dataRead = json.dump(dataRead,rf)
我想洗掉物件名稱,并將其更改為新的。Withpop()或.delete()。
但無論如何,我得到了同樣的錯誤。
我該怎么辦?
錯誤是:
Traceback (most recent call last):
dataRead ['Teachers'] [3] ['Name']. pop () AttributeError: 'str' object has no attribute 'pop'
uj5u.com熱心網友回復:
你應該做
dataRead['Teachers'][3]['Name'] = "Hello"
uj5u.com熱心網友回復:
dataRead['Teachers'] 是一個串列。一旦您確定了要洗掉的串列中專案的索引(例如,3)然后 dataRead(['Teachers'].pop(3)
uj5u.com熱心網友回復:
您還可以查看 JSONPath 運算式(使用類似 的庫jsonpath-ng)。它使您可以更靈活地瀏覽 JSON 物件。這里有些例子:
更改Name特定元素:
from jsonpath_ng.ext import parser
for match in parser.parse("$.Teachers[?(@.Name=='Mag')]").find(x):
match.value['Name'] = 'New'
Name從具有Name屬性的元素中彈出:
for match in parser.parse("$.Teachers[?(@.Name)].[*]").find(x):
match.value.pop('Name')
Name為所有節點設定Teachers
for match in parser.parse("$.Teachers.[*]").find(x):
match.value['Name'] = 'New name'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/333854.html
上一篇:AJAX回應不會在控制臺中列印
