我需要加載一個json并讀取內容,以便以后編輯它。我得到了
{TypeError}string indices must be integers
這里是json的結構(注意,以下是json檔案已經加載時的格式,否則會顯示雙引號)
data ={'a'/span>:'hello'/span>,'b'/span>: '{"date1": "9/21/2021", "date2": "9/22/2021"}','c':'new'}。
當試圖訪問data['b']['date1']/code>時
它拋出了錯誤
代碼如下
jsonfile=open(file.json, "r")
data = json.load(jsonfile)
jsonfile.close()
date = data['b'/span>]['date1']
uj5u.com熱心網友回復:
data['b']的內容是一個字串,它包含一個JSON檔案:
'{"date1": "9/21/2021", "date2": "9/22/2021"}'/span>
因此,你應該先把它轉換成JSON(dict / list):
data_b = json.load(data['b'])
現在它被轉換為一個dict,你已經可以訪問它的鍵了:
data_b["date1"]
如果你想更新這些值,那么就更新dict,然后將其轉換回字串,并重新分配給原始資料:
import json
data = {'a':'hello', 'b': '{"date1": "9/21/2021", "date2": "9/22/2021"}','c':'new']
data_b = json.load(data['b'] )
data_b["date1"] = "uped 1"]
data_b["date2"] = "更新2"。
data['b'] = json.dumps(data_b)
print(data)
輸出:
{'a'/span>: 'hello', 'b': '{"date1": "更新1", "日期2": "更新2"}', 'c': 'new'}。
要把它寫回去,你必須在writ-mode w中打開檔案,然后使用json.dump()或file.write()。
with open("file.json"/span>, 'w'/span>) as json_file。
#選項1
json.dump(data, json_file)
# 選項2
# json_file.write(json.dumps(data))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/332305.html
標籤:
